Fehler singuläre Gradientenmatrix

Modelle zur Korrelations- und Regressionsanalyse

Moderator: EDi

bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: Fehler singuläre Gradientenmatrix

Beitrag von bigben »

Um vielleicht etwas realistischere Erwartungen zu erzielen hilft es, sich Grafiken anzuschauen:
Rplot.jpeg
Da wird man weder mit einer Geraden noch mit einer Exponentialfunktion einen perfekten Fit erreichen.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Luisa_33
Beiträge: 19
Registriert: Do Jun 25, 2020 3:46 pm

Re: Fehler singuläre Gradientenmatrix

Beitrag von Luisa_33 »

Hallo liebe R-Freunde,

ja genau, es geht mir eher um die Vorhersagekraft als um die Signifikanz.
bigben hat geschrieben: Mo Okt 12, 2020 1:05 pm
Jetzt hast Du 17 % Varianzaufklärung und beide Prädiktoren sind signifikant. Wenn es Dir um Signifikanz ging, dann ist das Ziel erreicht. Wenn es um Vorhersagekraft und Anpassung an Nichtliniearität geht, dann könnte man bei den Maschinenlernverfahren vielleicht noch was besseres als die lineare Regression finden.
Wenn ich jetzt dieses Modell auf den Validierungsdaten anwenden möchte und somit die "wahre" Zeit vorhersage.
> mod1 <- lm(log(Zeit) ~ Breite + Länge, data = l)
> summary(mod1)
Ist es richtig, wenn ich die folgendermaßen prognostiziere:

Code: Alles auswählen

exp(predict(mod1, vdata))
Liebe Grüße,
Luisa_33
bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: Fehler singuläre Gradientenmatrix

Beitrag von bigben »

Ja, so sollte das gehen.

Funktionstest:

Code: Alles auswählen

plot(Zeit ~ Breite, data = l)
lines(seq(0, 180, 10), 
      exp(predict(mod1, newdata = data.frame(Breite = seq(0, 180, 10), Länge = rep(10, 19)))))
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Luisa_33
Beiträge: 19
Registriert: Do Jun 25, 2020 3:46 pm

Re: Fehler singuläre Gradientenmatrix

Beitrag von Luisa_33 »

Okay, danke!

Wenn ich mir die Verteilungen von Breite und Länge anschauen, ist erkenntlich dass diese positiv schief sind.
Logarithmiere ich diese ebenfalls wird die Verteilung (Histogramm) besser.
Jetzt überlege ich, ob es vorteilhaft ist, diese Faktoren ebenfalls zu logarithmieren.

Code: Alles auswählen

> mod1 <- lm(log(Zeit) ~ log(Breite) + log(Länge), data = l) 
> summary(mod1)
exp(predict(mod1, vdata))

Code: Alles auswählen

Call:
lm(formula = log(Zeit) ~ log(Länge) + log(Breite...3), data = tdata)

Residuals:
    Min      1Q  Median      3Q     Max 
-3.4033 -0.5225  0.1760  0.7964  1.6104 

Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)      3.67844    0.58407   6.298 3.77e-09 ***
log(Länge)       0.17955    0.09498   1.891   0.0608 .  
log(Breite...3)  0.63577    0.12552   5.065 1.28e-06 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1.037 on 138 degrees of freedom
Multiple R-squared:  0.1724,	Adjusted R-squared:  0.1604 
F-statistic: 14.37 on 2 and 138 DF,  p-value: 2.134e-06
Dann würde ich ein Bestimmtheitsmaß von 0,1724 erhalten.
Ich bin mir gerade nicht sicher, ob der Ansatz Sinn mach oder das totaler Quatsch ist :D
bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: Fehler singuläre Gradientenmatrix

Beitrag von bigben »

Ja, und wenn Du einfach nur Zeit ~ Breite * Länge rechnest, dann hast du sogar ein adjustiertes R² von 19,7% bzw ein R² von 21,3% - das ist noch mehr!

Code: Alles auswählen

mod <- lm(Zeit ~ Breite * Länge, data = l)
summary(mod)
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Luisa_33
Beiträge: 19
Registriert: Do Jun 25, 2020 3:46 pm

Re: Fehler singuläre Gradientenmatrix

Beitrag von Luisa_33 »

bigben hat geschrieben: Do Okt 22, 2020 4:04 pm Ja, und wenn Du einfach nur Zeit ~ Breite * Länge rechnest, dann hast du sogar ein adjustiertes R² von 19,7% bzw ein R² von 21,3% - das ist noch mehr!

Code: Alles auswählen

mod <- lm(Zeit ~ Breite * Länge, data = l)
summary(mod)
Okay, kannst du mir kurz erklären, wie du auf Breite * Länge kommst? Was ist der Hintergrund?
bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: Fehler singuläre Gradientenmatrix

Beitrag von bigben »

Angemessener Hintergrund wäre, wenn wir wüssten, was es mit Länge und Breite auf sich hat und welche Zeit sie beeinflussen. Dann könnte man vielleicht mit Sachverstand auf dem jeweiligen Forschungsgebiet mit angemessenem Hintergrund modellieren. So ist es eher Herumstochern im Nebel.

Und da dachte ich mir, wenn Du die Logarithmen von Breite und Länge addierst dann ist es doch nicht abwegig, Breite und Länge zu multiplizieren. Bumms, schon war ein neues Modell da. Und der fit war besser.

Mein nächstes Stochern im Nebel wäre ein Generalisiertes Additives Modell (GAM) mit den gleichen Prädiktoren und siehe da, R² steigt weiter:

Code: Alles auswählen

library(mgcv)
mod.gam <- gam(Zeit ~ s(Breite) + s(Länge) + s(I(Breite * Länge)), data = l)
summary(mod.gam  )
plot(mod.gam)
macht

Code: Alles auswählen

> summary(mod.gam  )

Family: gaussian 
Link function: identity 

Formula:
Zeit ~ s(Breite) + s(Länge) + s(I(Breite * Länge))

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  1290.96      80.45   16.05   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Approximate significance of smooth terms:
                       edf Ref.df     F  p-value    
s(Breite)            5.681  6.723 6.932 4.35e-06 ***
s(Länge)             4.928  5.891 2.907  0.00839 ** 
s(I(Breite * Länge)) 1.000  1.000 7.536  0.00689 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

R-sq.(adj) =  0.279   Deviance explained = 33.8%
GCV = 1.0085e+06  Scale est. = 9.1895e+05  n = 142
>
Das sind 28% adjustiertes R²!

Andrew Gelman spricht in diesem Zusammenhang von den "researcher's degree of freedom". Durch all die Freiheiten, wie Du Deine Größen misst und wie Du mit ihnen Modelle aufstellst und welche Ausreißer Du entfernst hast Du sehr viele Freiheitsgrade, die in der abschließenden Statistik nicht wirklich auftauchen. Nur wissen wir leider von den schrittweisen Regressionsverfahren dass sowas zu hoffnungslosem Overfitting führen kann.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Luisa_33
Beiträge: 19
Registriert: Do Jun 25, 2020 3:46 pm

Re: Fehler singuläre Gradientenmatrix

Beitrag von Luisa_33 »

bigben hat geschrieben: Do Okt 22, 2020 4:22 pm Angemessener Hintergrund wäre, wenn wir wüssten, was es mit Länge und Breite auf sich hat und welche Zeit sie beeinflussen. Dann könnte man vielleicht mit Sachverstand auf dem jeweiligen Forschungsgebiet mit angemessenem Hintergrund modellieren. So ist es eher Herumstochern im Nebel.

Und da dachte ich mir, wenn Du die Logarithmen von Breite und Länge addierst dann ist es doch nicht abwegig, Breite und Länge zu multiplizieren. Bumms, schon war ein neues Modell da. Und der fit war besser.

Mein nächstes Stochern im Nebel wäre ein Generalisiertes Additives Modell (GAM) mit den gleichen Prädiktoren und siehe da, R² steigt weiter:

Code: Alles auswählen

library(mgcv)
mod.gam <- gam(Zeit ~ s(Breite) + s(Länge) + s(I(Breite * Länge)), data = l)
summary(mod.gam  )
plot(mod.gam)
macht

Code: Alles auswählen

> summary(mod.gam  )

Family: gaussian 
Link function: identity 

Formula:
Zeit ~ s(Breite) + s(Länge) + s(I(Breite * Länge))

Parametric coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept)  1290.96      80.45   16.05   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Approximate significance of smooth terms:
                       edf Ref.df     F  p-value    
s(Breite)            5.681  6.723 6.932 4.35e-06 ***
s(Länge)             4.928  5.891 2.907  0.00839 ** 
s(I(Breite * Länge)) 1.000  1.000 7.536  0.00689 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

R-sq.(adj) =  0.279   Deviance explained = 33.8%
GCV = 1.0085e+06  Scale est. = 9.1895e+05  n = 142
>
Das sind 28% adjustiertes R²!

Andrew Gelman spricht in diesem Zusammenhang von den "researcher's degree of freedom". Durch all die Freiheiten, wie Du Deine Größen misst und wie Du mit ihnen Modelle aufstellst hast Du sehr viele Freiheitsgrade, die in der abschließenden Statistik nicht auftauchen.
Zuletzt geändert von Luisa_33 am Di Nov 03, 2020 12:09 pm, insgesamt 1-mal geändert.
bigben
Beiträge: 2777
Registriert: Mi Okt 12, 2016 9:09 am

Re: Fehler singuläre Gradientenmatrix

Beitrag von bigben »

Hallo Luisa,
Luisa_33 hat geschrieben: Do Okt 22, 2020 4:43 pmAus diesem Grund kann das Bauteil nicht durch Breite * Länge erklärt werden.
Trotzdem hat der Interaktionsterm einen p-Wert von 0,0008 und er verbessert das adjustierte R².
Und: Bist Du bei Deinen e-Funktionen genauso kritisch wie bei der Fläche Breite*Länge?

Ich weiß ja nicht, ob die Bauteile additiv gefertigt werden oder subtraktiv oder ob es sich um Prozesse handelt, bei denen die Oberfläche des Bauteils eine Rolle spielt oder das Volumen oder...

Wenn man unterstellt, dass das Volumen geschätzt werden kann als Breite*Breite*Länge dann kommt übrigens auch ein vergleichbar guter fit heraus:

Code: Alles auswählen

> mod.cub <- lm(Zeit ~ Länge + Breite + I(Breite^2*Länge), data = l)
> summary(mod.cub)

Call:
lm(formula = Zeit ~ Länge + Breite + I(Breite^2 * Länge), data = l)

Residuals:
    Min      1Q  Median      3Q     Max 
-1823.4  -701.8  -201.3   560.2  3116.8 

Coefficients:
                      Estimate Std. Error t value Pr(>|t|)    
(Intercept)          2.555e+02  1.943e+02   1.315  0.19057    
Länge                5.542e+00  2.057e+00   2.694  0.00794 ** 
Breite               1.609e+01  2.708e+00   5.942 2.18e-08 ***
I(Breite^2 * Länge) -4.955e-04  1.481e-04  -3.346  0.00106 ** 
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 1014 on 138 degrees of freedom
Multiple R-squared:  0.2108,	Adjusted R-squared:  0.1936 
F-statistic: 12.29 on 3 and 138 DF,  p-value: 3.582e-07
Die Ähnlichkeit zwischen den beiden Modellen liegt daran, dass bei Deinen Bauteilen die Fläche Breite*Länge sehr gut mit dem Volumen Breite*Breite*Länge korreliert.
Ich habe deshalb die beiden Parameter "einzeln" betrachtet.

Das Recht zu entscheiden, welche Transformationen ok sind und welche nicht will Dir ja auch keiner nehmen. Außerdem wirst Du ja hoffentlich noch weitere Daten mit abweichenden Werten von Gruppe haben und dann ohnehin ein neues Modell unter Einbezug von Gruppe aufstellen.

LG,
Bernhard
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Antworten