Logistische Regression mit nicht Binären Zahlen
Moderator: EDi
Logistische Regression mit nicht Binären Zahlen
Hallo alle Zusammen,
ich hatte vor einiger zeit schon mal eine Frage gestellt, aber leider habe ich kein Zugriff mehr auf mein Konto.
Für meine BA muss ich (als blutiger R Anfänger) jede menge GLM rechnen, für jeden Probanden eine, um die Parameter anschließend in einer ANOVA vergleich zu können.
Meine response liegen allerdings als Prozentwerte vor. Damit sind sie im Wertebereich zwischen 0 und 1 aber eben nicht nur binär.
Meine Betreuerin meinte dies wäre kein Problem, da man in R in der glm die response auch als Vektor eingeben könnte und es dann funktioniert. R würde dies dann als Häufigkeiten verstehen und zulassen oder so.
Gesagt getan:
resonse = response im Wertebereich 0-100 /100 (wusste nicht wie ich es besser schreiben sollte)
stimulus = Prädiktor mit 15 metrischen Ausprägungen
glm <- glm(c(daten4$response|100) ~ daten4$stimulus, family=binomial(link="logit"), maxit = 100)
coef(glm)
(Intercept) daten4$stimulus
2.556607e+01 1.878102e-07
Mein Problem ist nur das die Koeffizienten komplett Sinnfrei sind.
So viel ich weis kann der Wendepunkt durch 2.556607e+01/1.878102e-07 bestimmt werden und würde damit bei 136127165 liegen. Was für ein Quatsch.
Von daher habe ich die Vermutung, dass etwas mit meiner glm Gleichung nicht stimmt, vermutlich mit dem eingebauten Vektor
Weis zufällig einer von euch wie das funktioniert ?
Lg
Vortex
ich hatte vor einiger zeit schon mal eine Frage gestellt, aber leider habe ich kein Zugriff mehr auf mein Konto.
Für meine BA muss ich (als blutiger R Anfänger) jede menge GLM rechnen, für jeden Probanden eine, um die Parameter anschließend in einer ANOVA vergleich zu können.
Meine response liegen allerdings als Prozentwerte vor. Damit sind sie im Wertebereich zwischen 0 und 1 aber eben nicht nur binär.
Meine Betreuerin meinte dies wäre kein Problem, da man in R in der glm die response auch als Vektor eingeben könnte und es dann funktioniert. R würde dies dann als Häufigkeiten verstehen und zulassen oder so.
Gesagt getan:
resonse = response im Wertebereich 0-100 /100 (wusste nicht wie ich es besser schreiben sollte)
stimulus = Prädiktor mit 15 metrischen Ausprägungen
glm <- glm(c(daten4$response|100) ~ daten4$stimulus, family=binomial(link="logit"), maxit = 100)
coef(glm)
(Intercept) daten4$stimulus
2.556607e+01 1.878102e-07
Mein Problem ist nur das die Koeffizienten komplett Sinnfrei sind.
So viel ich weis kann der Wendepunkt durch 2.556607e+01/1.878102e-07 bestimmt werden und würde damit bei 136127165 liegen. Was für ein Quatsch.
Von daher habe ich die Vermutung, dass etwas mit meiner glm Gleichung nicht stimmt, vermutlich mit dem eingebauten Vektor
Weis zufällig einer von euch wie das funktioniert ?
Lg
Vortex
Re: Logistische Regression mit nicht Binären Zahlen
Hallo Vortex,
Ob das wirklich das Problem ist wüsste ich, wenn Du ein echtes Zahlenbeispiel in R-Code verpackt gepostet hättest. Siehe oben.
LG,
Bernhard
Am besten schreibst Du es als echten R Code in code Tags, sodass wir das Beispiel gleich auf unseren Rechnern in unser R kopieren können. Könnte ungefährt so aussehen:
Code: Alles auswählen
response <- c(23, 35, 66, 67, 88, 99)
Muss kein Quatsch sein. Wenn stimulus keine Auswirkungen auf response hat, dann wird die Steigung eben sehr gering, weil der Algorithmus quasi eine waagerechte abbilden will - und der Wendepunkt von quasi waagerecht der liegt halt sehr, sehr weit weg von der realen Datenbasis. Wo kein Zusammenhang, da auch kein Wendepunkt. Hast Du denn mal eine Grafik gemacht, ob es visuell einen Zusammenhang zwischen stimulus und response gibt?würde damit bei 136127165 liegen. Was für ein Quatsch.
Ob das wirklich das Problem ist wüsste ich, wenn Du ein echtes Zahlenbeispiel in R-Code verpackt gepostet hättest. Siehe oben.
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Logistische Regression mit nicht Binären Zahlen
Wir wäre es mit einer beta-Verteilung (wenn keine 1 und 0 dabei sind)?
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
.
Re: Logistische Regression mit nicht Binären Zahlen
Hallo Bernhard,
jetzt noch mal mit einem richtigem Code
Danke für deinen Beitrag für das Darstellen eines Codes, der hat super geholfen.
Also einen Zusammenhang sehe ich schon.
Hallo Edi,
Eine beta- Verteilung war auch im Gespräch, aber es sind 0 und 1 dabei, weshalb wir zu einer logistischen Regression gegangen sind.
Schöne Grüße
Vortex
PS: Wie wird das hier gehandhabt, wird eher ein Synonym für den Namen genommen, oder ist lieber der richtige Name erwünscht ?
jetzt noch mal mit einem richtigem Code
Danke für deinen Beitrag für das Darstellen eines Codes, der hat super geholfen.
Also einen Zusammenhang sehe ich schon.
Code: Alles auswählen
#Erstellung des Datensatzes
response <- c(0.95, 0.85, 0.09, 0.54, 0.50, 1.00, 0.60, 0.01, 0.56, 0.51, 0.60, 0.06, 0.41, 0.34, 0.46, 1.00, 0.87, 0.16, 0.30, 0.36, 1.00, 0.59, 0.01, 0.30, 0.62, 0.63, 0.01, 0.33, 0.01, 0.32)
stimulus <- c(13, 12, 2, 7, 4, 14, 8, 0, 5, 10, 11, 1, 9, 3, 6, 13, 12, 2, 7, 4, 14, 8, 0, 5, 10, 11, 1, 9, 3, 6)
testframe <- data.frame(stimulus, response)
#Erstellung eines Plots
linie<- aggregate(testframe$response, by=list(testframe$stimulus), mean)
plot(NA, ylim=c(0,1), xlim=c(1,15))
lines(linie[,"x"], col="blue")
#glm Berechnung
glm <- glm(c(testframe$response|100) ~ testframe$stimulus, family=binomial(link="logit"), maxit = 100)
coef(glm)
#(Intercept) testframe$stimulus
#2.556607e+01 1.878102e-07
a1 <- glm$coef[1]
b1 <- glm$coef[2]
wendep <- a1/b1
#wendep = 136127155
Hallo Edi,
Eine beta- Verteilung war auch im Gespräch, aber es sind 0 und 1 dabei, weshalb wir zu einer logistischen Regression gegangen sind.
Schöne Grüße
Vortex
PS: Wie wird das hier gehandhabt, wird eher ein Synonym für den Namen genommen, oder ist lieber der richtige Name erwünscht ?
Re: Logistische Regression mit nicht Binären Zahlen
Hallo Vortex,
ich weiß nicht, wo Du die Notation mit dem `|` her hast, aber das funktioniert so nicht.
LG,
Bernhard
ich weiß nicht, wo Du die Notation mit dem `|` her hast, aber das funktioniert so nicht.
Das `|` wird als logisches Oder gelesen und alle Werte ungleich Null werden als TRUE gelesen und so kommt bei `|100` immer TRUE heraus.
Ich glaube, wir haben das noch nie diskutiert und die Leute, bei denen ich beides kenne, spreche ich mal über ihren Nickname und mal über ihren Vornamen an. Wir sind da nicht kompliziert.Wie wird das hier gehandhabt, wird eher ein Synonym für den Namen genommen, oder ist lieber der richtige Name erwünscht ?
LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Logistische Regression mit nicht Binären Zahlen
Schau mal, ob Dir das gefällt:
LG,
Bernhard
Code: Alles auswählen
response <- c(0.95, 0.85, 0.09, 0.54, 0.50, 1.00, 0.60, 0.01, 0.56, 0.51, 0.60, 0.06, 0.41, 0.34, 0.46, 1.00, 0.87, 0.16, 0.30, 0.36, 1.00, 0.59, 0.01, 0.30, 0.62, 0.63, 0.01, 0.33, 0.01, 0.32)
stimulus <- c(13, 12, 2, 7, 4, 14, 8, 0, 5, 10, 11, 1, 9, 3, 6, 13, 12, 2, 7, 4, 14, 8, 0, 5, 10, 11, 1, 9, 3, 6)
testframe <- data.frame(stimulus, response)
glm <- glm(response ~ stimulus, data = testframe, family=binomial(link="logit"), maxit = 100, weights = rep(1,30))
coef(glm)
plot(stimulus, response, xlim = c(-5, 19))
lines(-5:19, predict(glm, newdata = data.frame(stimulus = -5:19), type = "response"))
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Logistische Regression mit nicht Binären Zahlen
Hallo Bernhard,
Diese Gleichung hatte ich von meiner Dozentin, das war ihre Überlegung wie ich die Binäre Logistische Regression mit nicht Binären Daten anwenden kann.
Hast du vielleicht eine Idee wie ich das Problem besser lösen könnte?
Schöne Grüße
Vortex
Diese Gleichung hatte ich von meiner Dozentin, das war ihre Überlegung wie ich die Binäre Logistische Regression mit nicht Binären Daten anwenden kann.
Hast du vielleicht eine Idee wie ich das Problem besser lösen könnte?
Schöne Grüße
Vortex
Re: Logistische Regression mit nicht Binären Zahlen
Antwort 3 Minuten vor der Frage gepostet: z. B mit weights. Wenn Du jedem Datenpunkt ein Gewicht mit weights zuordnest kommt glm damit besser klar...
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Re: Logistische Regression mit nicht Binären Zahlen
Hallo Bernhard,
als ich es geschrieben hatte, wurde meine Seite aktualisiert und ich hatte es auch gesehen
Das gefällt mir sehr gut und hilft mir echt weiter. Danke sehr!
Jetzt versuche ich mich mal an einer Schleife für die Auswertung
Liebe Grüße
Vortex
als ich es geschrieben hatte, wurde meine Seite aktualisiert und ich hatte es auch gesehen
Das gefällt mir sehr gut und hilft mir echt weiter. Danke sehr!
Jetzt versuche ich mich mal an einer Schleife für die Auswertung
Liebe Grüße
Vortex