Generalisiertes Lineares Modell

Allgemeine Statistik mit R, die Test-Methode ist noch nicht bekannt, ich habe noch keinen Plan!

Moderatoren: EDi, jogo

Antworten
IWouldLike2Know
Beiträge: 7
Registriert: Do Mai 02, 2019 10:51 am

Generalisiertes Lineares Modell

Beitrag von IWouldLike2Know »

Hallo zusammen,

ich muss eine Arbeit anfertigen und werte dafür meine Daten mit R aus. Allerdings habe ich noch nie zuvor damit gearbeitet und bin daher ganz neu in der Materie (vorher nur mit SPSS).
Meine Daten zusammengefasst sind wie folgt:
- verschiedene Subjekte, die unterschiedliche Eigenschaften haben (subj)
- verschiedene Variationen eines Einflussfaktors (fakt)
- meine gezählten Ergebnisse (gez)

ich habe anfangs eine ANOVA gemacht, allerdings sind die Zählungen ganze Zahlen, daher darf ich das so gar nicht machen. Nun habe ich den Hinweis bekommen, ich soll es mit einem GLM probieren, doch hier hänge ich nun. Ich habe es zwar ausprobiert, habe aber keine Ahnung, ob das so richtig ist (die Ergebnisse zeigen mir nur bei einer Kombi Signifikanz an, obwohl Effekte der unterschiedlichen Varianten des Einflussfaktors erkennbar sind und auch Unterschiede in den verschiedenen Subjekten)
Kann mir jemand vielleicht ganz leicht erklären, wie ich das GLM durchführen muss?
bisher habe ich nur das zustande bekommen:

Code: Alles auswählen

model1=glm(gez~fakt+subj,poisson) 
bzw. einmal noch mit fakt*subj.

Ich bin für jede Hilfe dankbar! :oops:
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Generalisiertes Lineares Modell

Beitrag von bigben »

Hallo,

viele Probleme im Forum entstehen durch die Art, wie die Daten in R eingelesen werden. Üblicherweise legt man die Daten einer Studie in einem data.frame ab, also in einer Variablen, die eine Tabelle enthält, in der jede Zeile eine Beobachtung repräsentiert. Wenn Du das gemacht hast, dann enthält der von Dir vorgeschlagene Aufruf von glm gar keinen Hinweis darauf, welcher data.frame denn jetzt für die Regression genutzt werden soll.
Meine Daten zusammengefasst sind wie folgt:
- verschiedene Subjekte, die unterschiedliche Eigenschaften haben (subj)
- verschiedene Variationen eines Einflussfaktors (fakt)
- meine gezählten Ergebnisse (gez)
Hast Du Deine Daten in einem Dataframe? Heißt der Dataframe variablenname? Dann poste uns bitte das Ergebnis von

Code: Alles auswählen

str(variablenname)
Gerne in code-Tags. Wenn Deine Variable anders heißt, ersetz einfach deren Name.

Code: Alles auswählen

print(str(variablenname))
poissonmodell <- glm(gez ~ subj * fakt, family = poisson(), data=variablenname)
print(summary(poissonmodell))
print(anova(poissonmodell))
Vielleicht erzählst Du uns ja auch noch ein wenig darüber, was das für eine Studie ist. Was soll da untersucht werden, wie werden die Einflussfaktoren erhoben. Ist subj eine ID oder ein Messwert, der das Subjekt beschreibt, etc. Kommt es auf das einzelne Subjekt an (fixed effects vs random effect, wenn Dir das was sagt)? Nur wenn Du uns etwas über die Studie bzw. das Studienziel erzählst können wir auch mitdenken, ob ein glm die passende Auswertemethode ist.

HTH erstmal,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
IWouldLike2Know
Beiträge: 7
Registriert: Do Mai 02, 2019 10:51 am

Re: Generalisiertes Lineares Modell

Beitrag von IWouldLike2Know »

Hallo,

danke für die Antwort.
Das Ergebnis von str zeigt das hier:

Code: Alles auswählen

> str(dat)
'data.frame':	144 obs. of  13 variables:
 $ clone : chr  "C2" "S1" "C4" "C2" ...
 $ ratio : Factor w/ 4 levels "0","0.5","1",..: 1 1 3 4 4 2 1 1 3 4 ...
 $ alive : num  10 10 10 10 10 10 10 10 10 10 ...
 $ day   : num  0 0 0 0 0 0 0 0 0 0 ...
clone= verschiedene Algenklone, die ich untersuche, also sozusagen der "Name" der verschiedenen Algen. Ich will herausfinden, wie die unterschiedlichen Klone anders auf den Einflussfaktor Plastik reagieren, was hier "ratio" darstellt (also das Verhältnis von Algen:Plastik). Alive = die gezählten Zellen an Tag 0 und Tag 3.

so ähnlich wie du vorgeschlagen hast, habe ich es sogar schon durchgeführt. Das hier steht unter den einzelnen Signifikanzen:

Code: Alles auswählen

    Null deviance: 427.01  on 143  degrees of freedom
Residual deviance: 315.28  on 120  degrees of freedom
AIC: 918.97
Number of Fisher Scoring iterations: 5
was ich damit anfangen soll, weiß ich jedoch nicht wirklich :?:

das kommt für die anova raus:

Code: Alles auswählen

Analysis of Deviance Table
Model: poisson, link: log
Response: alive
Terms added sequentially (first to last)
            Df Deviance Resid. Df Resid. Dev
NULL                                  143     427.01
clone            5   68.830       138     358.18
ratio            3   26.081       135     332.10
clone:ratio 15   16.816       120     315.28
gibt es denn eine grafische Darstellungsmethode, die sich eignen würde, um das Ergebnis zu verdeutlichen? Bzw. macht das überhaupt Sinn, da ein glm zu nutzen?

Danke nochmal!
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Generalisiertes Lineares Modell

Beitrag von bigben »

Hallo!
IWouldLike2Know hat geschrieben: Do Mai 02, 2019 3:06 pmDas Ergebnis von str zeigt das hier:

Code: Alles auswählen

> str(dat)
'data.frame':	144 obs. of  13 variables:
 $ clone : chr  "C2" "S1" "C4" "C2" ...
 $ ratio : Factor w/ 4 levels "0","0.5","1",..: 1 1 3 4 4 2 1 1 3 4 ...
 $ alive : num  10 10 10 10 10 10 10 10 10 10 ...
 $ day   : num  0 0 0 0 0 0 0 0 0 0 ...
Da fallen mir Dinge ins Auge:
1. Die ratio ist als nominale Variable (factor) hinterlegt. Werte wie "0,5" legen nahe, dass man das auch metrisch betrachten könnte. Das hängt ein wenig von Deiner Einschätzung der Sachlage zusammen, ob Du das nominal oder metrisch haben willst, aber das musst Du aktiv entscheiden, bevor Du was rechnen willst.
2. Die Zahl der lebenden Zellen schein an Tag 0 häufig 10 zu sein. Ist 10 so etwas wie eine logische Obergrenze, können es also höchstens zehn sein, weil nur zehn anfangs eingesetzt wurden? Das würde dann nicht einem Poisson-Modell, sondern einem Binomial-Modell entsprechen. Hängt vom Versuchsaufbau ab.
3. Wenn Dich Tag 0 und Tag 3 jeweils unabhängig voneinander interessieren, dann hast Du vor dem Rechnen sicher dana gefiltert, oder? Oder sollen die Tage mit ins Modell genommen werden um eine gemeinsame Regression zu rechnen?
so ähnlich wie du vorgeschlagen hast, habe ich es sogar schon durchgeführt.


"So ähnlich" ist immer schwierig. Wenn Du Ergebnisse zeigst, schreib bitte den genauen Aufruf von GLM dazu, sonst führt das früher oder später garantiert zu Missverständnissen.
Das hier steht unter den einzelnen Signifikanzen:

Code: Alles auswählen

    Null deviance: 427.01  on 143  degrees of freedom
Residual deviance: 315.28  on 120  degrees of freedom
AIC: 918.97
Number of Fisher Scoring iterations: 5
Das summary Deines Modells ist sicher wesentlich umfangreicher als diese vier Zeilen.
was ich damit anfangen soll, weiß ich jedoch nicht wirklich :?:
kopiert von https://github.com/bnamatherdhala/mint/ ... e-in-GLM-R
•To evaluate the overall performance of the model, look at the null deviance and residual deviance near the bottom of the print out. Null deviance shows how well the response is predicted by a model with nothing but an intercept (grand mean). This is essentially a chi square value on 24 degrees of freedom, and indicates very little fit (a highly significant difference between fitted values and observed values). Adding in our predictors–just “Age” in this case–decreased the deviance by 3667 points on 1 degree of freedom. Again, this is interpreted as a chi square value and indicates a highly significant decrease in deviance. The residual deviance is 26.7 on 23 degrees of freedom. We use this to test the overall fit of the model by once again treating this as a chi square value. A chi square of 26.7 on 23 degrees of freedom yields a p-value of 0.269. The null hypothesis (i.e., the model) is not rejected. The fitted values are not significantly different from the observed values
siehe auch: https://stats.stackexchange.com/a/141179/117812
Ich will herausfinden, wie die unterschiedlichen Klone anders auf den Einflussfaktor Plastik reagieren
Das ist ein biologisches Forschungsthema aber noch keine statistische Hypothese. Erst wenn die steht, lässt sich abschließend sagen, wie gut ein glm passt.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
IWouldLike2Know
Beiträge: 7
Registriert: Do Mai 02, 2019 10:51 am

Re: Generalisiertes Lineares Modell

Beitrag von IWouldLike2Know »

Hallo,
Da fallen mir Dinge ins Auge:
1. Die ratio ist als nominale Variable (factor) hinterlegt. Werte wie "0,5" legen nahe, dass man das auch metrisch betrachten könnte. Das hängt ein wenig von Deiner Einschätzung der Sachlage zusammen, ob Du das nominal oder metrisch haben willst, aber das musst Du aktiv entscheiden, bevor Du was rechnen willst.
2. Die Zahl der lebenden Zellen schein an Tag 0 häufig 10 zu sein. Ist 10 so etwas wie eine logische Obergrenze, können es also höchstens zehn sein, weil nur zehn anfangs eingesetzt wurden? Das würde dann nicht einem Poisson-Modell, sondern einem Binomial-Modell entsprechen. Hängt vom Versuchsaufbau ab.
3. Wenn Dich Tag 0 und Tag 3 jeweils unabhängig voneinander interessieren, dann hast Du vor dem Rechnen sicher dana gefiltert, oder? Oder sollen die Tage mit ins Modell genommen werden um eine gemeinsame Regression zu rechnen?
zu 1. das macht tatsächlich nur als nominale Variable Sinn, da ich die Verhältnisse beliebig gewählt habe und nicht variieren können.
zu 2. an Tag 1 wurden zehn Räuber in das System eingesetzt (das hatte ich nicht explizit gesagt, entschuldige bitte), daher ist der Anfangswert immer 10. Dann wurde am 5. Tag gezählt (sorry, hatte vorher Tag 3 geschrieben, das war ein anderes Experiment) und es können sowohl mehr als auch weniger sein (oder gar keine, falls alle gestorben sind).
zu 3. eigentlich interessiert mehr Tag 5 als 0, da an Tag 0 ja alles von mir festgelegt wurde. Beide zusammen hingegen will ich mir auch ansehen, um das Wachstum zu untersuchen.
"So ähnlich" ist immer schwierig. Wenn Du Ergebnisse zeigst, schreib bitte den genauen Aufruf von GLM dazu, sonst führt das früher oder später garantiert zu Missverständnissen.
ich habe durch ein Buch die Formel zusammenbekommen:

Code: Alles auswählen

model=glm(alive~clone*ratio,poisson)
was genau genommen nicht nur ein ähnliches, sondern exakt das gleiche Ergebnis bringt (was mich etwas beruhigt, also habe ich zumindest den Grundaufbau verstanden).
Das summary Deines Modells ist sicher wesentlich umfangreicher als diese vier Zeilen.
Ich habe da tatsächlich wohl etwas abgeschnitten:

Code: Alles auswählen

Call:
glm(formula = alive ~ clone * ratio, family = poisson(), data = dat)
Deviance Residuals: 
    Min       1Q   Median       3Q      Max  
-4.3205  -0.7353  -0.0524   0.9099   3.5529  

Coefficients:
                 Estimate Std. Error z value Pr(>|z|)    
(Intercept)       2.25129    0.13245  16.997  < 2e-16 ***
cloneC3           0.08408    0.18350   0.458  0.64680    
cloneC4           0.05129    0.18496   0.277  0.78153    
cloneC7           0.21963    0.17784   1.235  0.21685    
cloneS1           0.23361    0.17729   1.318  0.18761    
cloneS6           0.48955    0.16822   2.910  0.00361 ** 
ratio0.5         -0.37949    0.20781  -1.826  0.06783 .  
ratio1           -0.35417    0.20626  -1.717  0.08596 .  
ratio2           -0.60906    0.22316  -2.729  0.00635 ** 
cloneC3:ratio0.5  0.10250    0.28388   0.361  0.71805    
cloneC4:ratio0.5  0.42828    0.27518   1.556  0.11962    
cloneC7:ratio0.5  0.46062    0.26506   1.738  0.08225 .  
cloneS1:ratio0.5  0.11016    0.27433   0.402  0.68801    
cloneS6:ratio0.5  0.28954    0.25632   1.130  0.25865    
cloneC3:ratio1   -0.08408    0.28926  -0.291  0.77130    
cloneC4:ratio1    0.44948    0.27269   1.648  0.09929 .  
cloneC7:ratio1    0.31100    0.26708   1.164  0.24425    
cloneS1:ratio1    0.29701    0.26672   1.114  0.26546    
cloneS6:ratio1    0.28748    0.25454   1.129  0.25872    
cloneC3:ratio2    0.09285    0.30489   0.305  0.76072    
cloneC4:ratio2    0.62559    0.28786   2.173  0.02976 *  
cloneC7:ratio2    0.45726    0.28334   1.614  0.10656    
cloneS1:ratio2   -0.05668    0.30119  -0.188  0.85072    
cloneS6:ratio2    0.10182    0.28002   0.364  0.71615    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
(Dispersion parameter for poisson family taken to be 1)

Null deviance: 427.01  on 143  degrees of freedom
Residual deviance: 315.28  on 120  degrees of freedom
AIC: 918.97

Number of Fisher Scoring iterations: 5
Das ist ein biologisches Forschungsthema aber noch keine statistische Hypothese. Erst wenn die steht, lässt sich abschließend sagen, wie gut ein glm passt.
Meine Hypothesen für diesen Versuch sind die: Die Räuber der verschiedenen Algenklone reagieren unterschiedlich stark auf die Anwesenheit von Plastik. C7 sind die Algen, die am besten wachsen und damit können die Räuber damit am besten überleben. Das Plastikverhältnis 2 hat den größten negativen Einfluss auf die Räuber.
Ich hoffe, das macht es ein bisschen verständlicher.

Vielen lieben Dank!
Antworten