Hallo,
ich kenne zwar stepAIC, aber gibt es eine Möglichkeit, automatisch das beste Modell zu finden, die auch Wechselwirkungen/Quadrierte Parameter und ähnliches beachtet?
Mit freundlichen Grüßen
Gwinzy
Bestes Modell finden
Moderator: EDi
Re: Bestes Modell finden
Wird es irgendwo geben, kenne ich persönlich nicht. Schon die üblichen stepwise Methoden führen zu einem Overfitting an die Details der jeweiligen Stichprobe. Wenn Du nicht sehr viele Beobachtungen hast ist das gefährlich. Wenn Du sehr viele hast, denk auch über Neuronale Netze etc nach.
JMTC,
Bernhard
JMTC,
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: Bestes Modell finden
Mit MuMIn::dredge() kann man brute-force mäßig alle Modelle rechnen...
Um den Fehler bei der Selektion (also den Fehler bei der Wahl des "besten") sich mal anzuschauen, könnte man das ganze mit bootstraps /cross-validation mal abschätzen...
Macht zwar keiner, würde aber die Sinnhaftigkeit solcher Prozeduren darstellen...
Um den Fehler bei der Selektion (also den Fehler bei der Wahl des "besten") sich mal anzuschauen, könnte man das ganze mit bootstraps /cross-validation mal abschätzen...
Macht zwar keiner, würde aber die Sinnhaftigkeit solcher Prozeduren darstellen...
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: Bestes Modell finden
Athomas hatte irgendwann mal eine Simulation in der folgende Art gemacht:
Wir nehmen eine Matrix mit ganz zufälligen Beobachtungen. Je 1000 Beobachtungen von 100 Variablen:
Jetzt stellen wir ein lineares Modell auf, das die erste Spalte durch die 99 anderen vorhersagt:
Davon nehmen wir jetzt die Koeffizienten und sortieren die mit dem niedrigsten p-Wert nach oben. Wir schauen uns die 10 besten an:
Das Ergebnis:
Gut, sechs signifikante Prädiktoren sind identifiziert, V87 ist mit p < 0,001 über jeden Zweifel erhaben, V24 verfehlt Signifikanz ganz knapp mit p = 0,057.
AIC des Ausgangswerts und des auf die signifikanten Prädiktoren begrenzten Modells:
Wir konnten also die signifikanten Variablen identifizieren und den AIC damit senken. Das Model zwei war höchst signifikant besser als das Nullmodell mit p-value: 6.718e-08 ! Schade nur, dass wir auch ohne CrossValidation in diesem Fall wissen, dass es überhaupt gar keinen Zusammenhang gibt. Nur zuviele Prädiktoren und eine automatisierte Modellauswahl. Wenn wir da jetzt noch alle quadratischen, kubischen und Interaktionsterme drin hätten würde die Kombinatorik ihr übriges tun.
LG,
Bernhard
Wir nehmen eine Matrix mit ganz zufälligen Beobachtungen. Je 1000 Beobachtungen von 100 Variablen:
Code: Alles auswählen
set.seed(4711)
bsp <- as.data.frame(matrix(rnorm(100000), nrow=1000))
Code: Alles auswählen
model1 <- lm(V1~., data=bsp)
Code: Alles auswählen
co <- summary(model1)$coefficients
head(co[order(co[,4]),],10)
Code: Alles auswählen
> head(co[order(co[,4]),],10)
Estimate Std. Error t value Pr(>|t|)
V87 0.11330660 0.03126428 3.624155 0.0003061565
V73 -0.09956095 0.03050163 -3.264119 0.0011394572
V10 -0.08610537 0.03121777 -2.758216 0.0059295837
V91 0.08026375 0.03214044 2.497282 0.0126925862
V61 -0.07951723 0.03194038 -2.489552 0.0129700056
V89 -0.07187542 0.03212909 -2.237082 0.0255250979
V24 0.06063133 0.03182597 1.905090 0.0570868552
V4 0.05825938 0.03156337 1.845791 0.0652508491
V45 -0.05552266 0.03119715 -1.779735 0.0754566842
V72 0.05515997 0.03135250 1.759348 0.0788581052
AIC des Ausgangswerts und des auf die signifikanten Prädiktoren begrenzten Modells:
Code: Alles auswählen
> model2 <- lm(V1 ~ V87+V73+V10+V91+V61+V89, data = bsp)
> AIC(model1)
[1] 2842.387
> AIC(model2)
[1] 2734.049
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