Bioinformatik: R - lmfit

Hallo liebe Wissenden,

zur Auswertung von Microarray-Daten wird eine statistische Analyse durchgeführt. Unter anderem wird die lmfit-Funktion von R verwendet. Generell findet man schon einiges zu dieser Funktion im Internet, z.B.: http://physics.nyu.edu/grierlab/idl_html_help/L36.html Es heißt immerzu, dass ein nicht-lineares Modell an die Daten „gefittet“ wird, in diesem Fall wohl unter Verwendung der Methode der kleinsten Quadrate und anderer anspruchsvollerer statistischer Methoden.

Was bedeutet im Zusammenhang mit Expressionsdaten das Fitten eines Modells? Im Normalfall stelle ich es mir wie eine Regressionsanalyse vor, wobei es eine abhängige und eine unabhängige Variable gibt. In R wird an lmfit eine Matrix mit Expressionswerten (Spalten entsprechen den Samples, Zeilen den Genbezeichnungen) sowie eine „Designmatrix“ (Zuordnung der Samples zu Klassen: Spalten entsprechen den Klassen, Zeilen den Samples) übergeben. Ich nehme an, das Modell wird für einzelne Gene (also Zeilen der Expressionsmatrix) erstellt.

Gegeben sind Expressionsdaten, die sicherlich abhängig von der Klassifizierung sind, insofern werden die Expressionswerte die abhängige Variable sein. Was ist die unabhängige Variable? Die Samples? Wie kann man sich das dann bildlich vorstellen? Samples sind ja keine stetige Variable, sondern können vereinfacht gesagt auf zwei Klassen reduziert werden. Wie kann unter diesen Umständen ein Modell gefittet werden?

Ich hoffe, mein Beitrag ist nicht zu wirr geschrieben. In meinem Kopf sieht es nämlich leider ganz schön wirr aus. :smile: Aber vielleicht könnt ihr mir ja trotzdem weiterhelfen.

Viele Grüße,
Anja

Hallo Anja,

Hast du das aus dem „limma“-Packet?

http://bioconductor.org/packages/2.0/bioc/html/limma…

sowie das PDF daraus:

http://bioconductor.org/packages/2.0/bioc/vignettes/…

Es
heißt immerzu, dass ein nicht-lineares Modell an die Daten
„gefittet“ wird, in diesem Fall wohl unter Verwendung der
Methode der kleinsten Quadrate und anderer anspruchsvollerer
statistischer Methoden.

Sicher?

Die lmFit-Funktion, die ich kenne, fittet ein lineares Modell. Das Kürzel steht für l inear m odel Fit. Nicht lineare Modelle werden in R mit nlmFit gefittet. Das ist mir aber für Microarray-Daten noch nicht untergekommen.

Im Prinzip ist lmFit schlicht eine Regressionsanalyse (die ja auch über die kleinsten Quadrate geht). Dazu benötigt jeder (Expressions-)Wert [log ratio der Signalintensitäten; nennen wir ihn M-Wert] auch einen „x“-Wert. Wenn alle Werte das gleiche bedeuten, also identische Messwiederholungen sind, dann wird jeder x-Wert auf 1 gesetzt. Eine Regressionsgerade durch die Punkte (und den Ursprung) ergibt als Steigung gerade den Mittelwert. Wenn es sich nun bei dem Teil der Messungen um dye-swaps handelt, dann bekommen die Werte mit vertauschten Dyes als x-Wert eine -1. Handelt es sich um die gleichen biolgischen Proben, erwartet man ja auch für M-Werte das umgekehrte Voezeichen. Die Steigung der Regressionsgeraden bleibt also gleich.

Die „x“-Werte werden in der Design-Matrix zusammengefasst.

Mit Hilfe dieses Systems kann man nun sehr leicht auch komplexere Fragen beantworten, nämlich solche, wo sich der interessierende Kontrast nicht 1:1 aus den Hybridisierungen ergibt. Das zu erklären, führt hier aber zu weit. Das steht jedoch ganz gut in der limma-Anleitung (siehe Link oben).

Ich hoffe, mein Beitrag ist nicht zu wirr geschrieben.

Ich hoffe, die Antwort ist es auch nicht. Wenn doch, frag halt nochmal nach!

LG
Jochen

Hallo Jochen,

danke für deine rasche Antwort!

Hast du das aus dem „limma“-Packet?

Ja.

sowie das PDF daraus:

Habe ich ausgedruckt vor mir liegen, werde in diesem Punkt aber auch nicht schlauer daraus.

Die lmFit-Funktion, die ich kenne, fittet ein lineares
Modell.

Äh, ja, klar, du hast Recht.

Im Prinzip ist lmFit schlicht eine Regressionsanalyse (die ja
auch über die kleinsten Quadrate geht). Dazu benötigt jeder
(Expressions-)Wert [log ratio der Signalintensitäten;
nennen wir ihn M-Wert] auch einen „x“-Wert. Wenn alle Werte
das gleiche bedeuten, also identische Messwiederholungen sind,
dann wird jeder x-Wert auf 1 gesetzt.
Eine Regressionsgerade
durch die Punkte (und den Ursprung) ergibt als Steigung gerade
den Mittelwert. Wenn es sich nun bei dem Teil der Messungen um
dye-swaps handelt, dann bekommen die Werte mit vertauschten
Dyes als x-Wert eine -1. Handelt es sich um die gleichen
biolgischen Proben, erwartet man ja auch für M-Werte das
umgekehrte Voezeichen. Die Steigung der Regressionsgeraden
bleibt also gleich.

Die „x“-Werte werden in der Design-Matrix zusammengefasst.

So wirklich klar ist mir das noch immer nicht. :frowning: Bei der Erstellung eines Regressionsmodells stelle ich mir immer zwei Variablen vor, von denen beide (also auch die unabhängige) nicht nur zwei Werte (im einfachsten Fall 0 und 1 in der Design-Matrix, wenn man ohne Dye-Swap arbeitet) haben, sondern eine Vielzahl an Werten annehmen können.

Ein einfaches und wohl recht bekanntes Beispiel, das lineare Regressionsanalyse veranschaulicht, ist ja das Auftragen der Bleikonzentration in der Nierenrinde von Schweinen in Abhängigkeit der Menge an Bleiacetat, die ihrem Futter beigemischt wird. In diesem Fall hast du zwei Variablen, die faktisch beliebige (positive) Werte annehmen können.

Ich habe aber Probleme damit, dieses simple Beispiel auf die Microarray-Analyse zu übertragen. Ok, die abhängige Variable (Bleikonzentration in Nierenrinde, „y-Werte“) sind bei uns die Expressionswerte. Du sagst, die unabhängige Variable („x-Werte“) seien in der Designmatrix enthalten. Aber dort habe ich doch nur 0 und 1 (bzw. auch -1 beim Dye-Swap), entsprechend den beiden Klassen (ich gehe jetzt nur von zwei Klassen aus, z.B. Tumorgewebe/kein Tumorgewebe). Das kann man doch nicht vergleichen mit dem Bleiacetat im Futter, einer Variablen, deren Wert stetig verändert werden kann! Bildlich stelle ich mir als Plot dann genau zwei x-Werte vor, bei denen jeweils eine Vielzahl von Expressionswerten zugeordnet sind, sodass man quasi zwei „Säulen“ im Bild hat (die Expressionswerte sind dann auf zwei vertikale Linien verteilt). Wo liegt mein Denkfehler?

Viele Grüße,
Anja

Hallo Anja,

sowie das PDF daraus:

Habe ich ausgedruckt vor mir liegen, werde in diesem Punkt
aber auch nicht schlauer daraus.

DIch glaube, ich habe nur die Vignette verlinkt (die hat nur eine Seite). Du solltest dir natürlich das Manual durchlesen. Auch andere Publikationen von Gordon Smyth zu Limma sind lesenwert.

So wirklich klar ist mir das noch immer nicht. :frowning: Bei der
Erstellung eines Regressionsmodells stelle ich mir immer zwei
Variablen vor, von denen beide (also auch die unabhängige)
nicht nur zwei Werte (im einfachsten Fall 0 und 1 in der
Design-Matrix, wenn man ohne Dye-Swap arbeitet) haben, sondern
eine Vielzahl an Werten annehmen können.

Ok, die Regressionsgerade ist nur eine Form eines linearen Modells. Ein lineares Modell heißt so, weil die zu fittenden Parameter des Modells alle nur linear sind. Die Funktion

y = a1x + a2

ist LINEAR in Bezug auf die Parameter a_i_. Dieses Modell beschreibt tatsächlich eine Regressionsgeade mit der Steigung a_1_ und dem Achsenabschnitt a_2_, mit x als Unabhängige.

Beachte: es geht um die Bestimmung der a’s! So ist auch folgendes Modell linear:

y = a1x³ + 5*a2x² - 2*a3

oder

y = a1sin(x) + a2*exp(-x) + ln(x)/ln(x+1)

oder auch

y = a1A + a2B + a3C

Du sagst, die unabhängige Variable
(„x-Werte“) seien in der Designmatrix enthalten. Aber dort
habe ich doch nur 0 und 1 (bzw. auch -1 beim Dye-Swap),
entsprechend den beiden Klassen (ich gehe jetzt nur von zwei
Klassen aus, z.B. Tumorgewebe/kein Tumorgewebe). Das kann man
doch nicht vergleichen mit dem Bleiacetat im Futter, einer
Variablen, deren Wert stetig verändert werden kann!

Doch, kann man. Warum denn nicht. Beim Bleiacetat gibst du doch letzlich auch die Werte vor. Es ist für das Modell unerheblich, ob die Werte ganzzahlig sind oder nicht.

Bildlich
stelle ich mir als Plot dann genau zwei x-Werte vor, bei denen
jeweils eine Vielzahl von Expressionswerten zugeordnet sind,
sodass man quasi zwei „Säulen“ im Bild hat (die
Expressionswerte sind dann auf zwei vertikale Linien
verteilt). Wo liegt mein Denkfehler?

Da ist kein Denkfeler. Genau so ist es gemeint.

Wie gesagt, für ein simples „common reference“-Design ohne dye-swap ist das mit Kanonen auf Spatzen geschossen. Das lineare Modell hat in der Design-Matrix bei jede Hybridisierung eine 1 stehen („x“ ist also immer 1), so ist das Modell schlicht

y = a1*1

y ist ja ein VEKTOR von log-ratios und enthält die Werte für EIN Gen für ALLE Hybridisierungen. Der Einfachheit halbe nehmen wir mal 1 Gen 2 Hybridisierungen an. Dann hast du hier eigentlich 2 Gleichungen:

y(1) = a1x und
y(2) = a1x

Da x immer 1 ist, läßt sich das vereinfacht schreiben:

y(1) = a1 und
y(2) = a1

Das Modell wird formal gelöst durch die Wahl eines Wertes für a1, für den die Summe der Abweichungsquadrate (y(j)-a1x)² also (y(j)-a1) ² minimal wird. Das ist, wie schon gesagt, einfach der Mittelwert aller y(j).

Ein common-reference-Design mit dye-swaps wäre im Prinzip genauso einfach, wenn man vorher die Vorzeichen der betreffenden log-rations umkehrt. Das kann man aber auch in der Design-Matrix berücksichtigen. Machen wir das wieder, Schritt für Schritt an unserem einfachten aller Beispiele:

Die Design-Matrix X ist jetzt (1 -1), also x(1)=1 und x(2)=-1. Das Modell ist damit

y(1) = a1x(1) und
y(2) = a1x(2),

also (X eingesetzt:smile:

y(1) = a1 und
y(2) = a1(-1) = -a1

Auch das Modell wird durch Minimierung der Abweichungsquadrate gelöst und liefert mit dem Parameter a1 die gewünschte Lösung für die „mittlere“ log-Ratio.

Nun muss nicht in allen Hybridisierungen immer diesselbe „behandelte“ Probe gegen die selbe „Referenz“-Probe hybridisiert sein. Man kann sich auch 3 verschiedene Proben (von jeweils mehreren biologischen Individuen) vorstellen, zB. eine Normalprobe A, eine Probe eines intraduktalen Mammacarcinoms B und eine Probe eines lobulären Mammacarcinoms C. Dich interessieren die Unterschiede in der Genexpression beider Carinomtypen zur Normalprobe und auch zwischen den Carcinomtypen. Es gibt viele Designs, die man dazu machen kann. Als Beispiel möchte ich das Ringdesign nehmen:

Du hybridisierst

  • A gegen B (A:B),
  • B gegen C (B:C) und
  • C gegen A (C:A).

Um A:B zu bekommen, kannst du direkt die A:B-Hybridisierungen nehmen. Da du aber AUCH B:C UND C:A hybridisiert hast, kannst du hier zusätzliche Information bezüglich A:B gewinnen, sozusagen INDIREKT über die Probe C. Sowas kann man mit einem linearen Modell sehr einfach bewerkstelligen. Hier hat die Design-Matrix 2 Spalten (immer eine Spalte weniger als Probentypen):

 ( 1 -1)
X = (-1 0)
 ( 0 -1)

Analog zu oben wird mit den Messwerten y das lineare Modell

y = aX

gelöst, und schon hat man den interessierenden Kontrast in a1, berechnet unter Nutzung ALLER zur Verfügung stehender Informationen.

Ansonsten hae ich noch eine andere Quelle gefunden, wo die Anwendung linearer Modelle in der Microarrayanalytik erklärt wird:

http://www.bepress.com/cgi/viewcontent.cgi?article=1…

Eine PowerPoint-Datei, wo Experimentdesigns und die Auswertung mit linearen Modellen aufgezeigt wereden, findest du hier:

www.mcb.mcgill.ca/~blanchem/618/DifferentialExpressi…

So, viel Spaß damit, erstmal… :smile:

LG
Jochen

1 „Gefällt mir“

Hallo Jochen,

danke! Jetzt sehe ich schon wesentlich besser durch. :smile:

Viele Grüße,
Anja