Exponentielles Modell als Anfang für logistisches

Modelle zur Korrelations- und Regressionsanalyse

Moderator: EDi

Schlumpinator
Beiträge: 7
Registriert: So Mai 03, 2020 1:20 pm

Exponentielles Modell als Anfang für logistisches

Beitrag von Schlumpinator »

Hallo an alle!

Für ein Experiment versuche ich einen Datensatz, der durch ein exponentielles Modell sehr gut geschätzt werden kann, als Anfang für ein logistisches Modell zu benutzen. Ich möchte die Steigungsparameter aus dem Exponentiellen Modell in ein logistisches übernehmen, und den Wendepunkt (xmed) sowie den "Maximalwert" (Asym) selbst bestimmen. Hoffentlich kann ich mich richtig ausdrücken und ihr versteht was ich meine.

Das Modell

Code: Alles auswählen

fit <- lm(log(y) ~ x
ergibt

Code: Alles auswählen

Residuals:
     Min       1Q   Median       3Q      Max 
-0.10663 -0.03045  0.01267  0.02759  0.08339 

Coefficients:
               Estimate Std. Error t value Pr(>|t|)    
(Intercept)    4.938523   0.022882   215.8   <2e-16 ***
coronadata$tag 0.263220   0.002007   131.2   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.04791 on 17 degrees of freedom
Multiple R-squared:  0.999,	Adjusted R-squared:  0.999 
F-statistic: 1.72e+04 on 1 and 17 DF,  p-value: < 2.2e-16
und die mit

Code: Alles auswählen

(exp(4.938523 + 0.263220*x)
gezeichnete Kurve passt wunderbar auf die ursprünglichen Daten. Nun möchte ich aber unterstellen, dass der weitere Verlauf logistisch ist, allerdings weiß ich nicht wie ich das machen soll. Durch

Code: Alles auswählen

fit <- nls(y ~ SSlogis(x,xmid,scal,Asym))
erhalte ich ein sehr schönes Modell, allerdings ist dieses ja auf die gegebenen x-Werte beschränkt und zeigt somit nicht in die "Zukunft".

Mein erster Ansatz war nun, das in der linearen Regression berechnete Modell "umzudrehen" und oben auf das berechnete "draufzusetzen". Das funktioniert, aber ist ja echt gefuscht. Habt ihr vielleicht eine Idee? Zudem ist es sehr wichtig, dass der Wendepunkt und Annäherungswert des logistischen Modells variabel definierbar ist. (wahrscheinlich ist das sowieso ein muss?) Über eure Ideen und Vorschläge freue ich mich sehr!

Vielen Dank und bleibt gesund! Liebe Grüße
Simon

Nachtrag:
Mein zweiter Ansatz wäre die Steigung und den Startwert aus der exponentiellen Gleichung in die der logistischen Gleichung einzusetzen. Aber ich weiß nicht ob das so richtig ist und ob ich das richtig verstehe. Ist es möglich die Variablen aus der Exponentialgleichung

Code: Alles auswählen

exp(startwert+steigung*x
in die logistische Gleichung

Code: Alles auswählen

maximalwert/(1+Startwert*exp(Steigung*x))
zu übernehmen?
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Exponentielles Modell als Anfang für logistisches

Beitrag von Athomas »

Du bist doch hoffentlich kein weiterer Corona-Hobbyforscher :shock: ?!

Den Sinn deines Unterfangens kann ich nicht beurteilen, habe aber gehörige Zweifel (Stabilität der Ergebnisse, Abhängigkeit von Einflussgrößen ausserhalb des Modells), aber:
... ich erhalte ein sehr schönes Modell, allerdings ist dieses ja auf die gegebenen x-Werte beschränkt und zeigt somit nicht in die "Zukunft".
Wie kommst Du zu dieser Aussage - meiner Meinung nach ist es durchaus möglich (ohne die Sinnfrage zu stellen!) mit nls zukünftige Werte zu prognostizieren!?
Schlumpinator
Beiträge: 7
Registriert: So Mai 03, 2020 1:20 pm

Re: Exponentielles Modell als Anfang für logistisches

Beitrag von Schlumpinator »

Hallo Athomas und danke für deine Antwort! Nee keine Sorge, ich bin kein Corona-Hobbyforscher. Ich bin nur begeistert von R und lerne gerade viel dazu und wenn ich etwas nicht hinbekomme, dann gehts mir echt nicht so gut :roll: :D Dabei sei ganz bewusst die Frage nach dem Sinn mal ganz egal, ich verfolge kein praktisches Ziel :-)

Ich frage mich nur, wie ich aus einer exponentiellen Funktion eine logistische machen kann. Merke schon, das klingt tatsächlich irgendwie dumm..

Zu meiner Aussage kam ich, weil SSlogis ja self-starting ist und ich davon ausgegangen bin, dass sie das Modell auf die Beobachtungen beschränkt und wenn ich in die Zukunft projizieren würde, ich nur noch den Annäherungswert Asym als Y bekäme. Aber da muss ich mich wirklich noch etwas einlesen!!
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Exponentielles Modell als Anfang für logistisches

Beitrag von Athomas »

Ich habe ein bisschen herumgespielt, und es ist richtig, was ich behauptet habe: nls macht durchaus "Vorhersagen" für die Zukunft.

Das Problem ist, dass wenn sich die Entwicklung in der Anfangsphase befindet (was ja der interessante Fall sein sollte) und die Messwerte fehlerbehaftet sind, SSlogis teilweise überhaupt nicht konvergiert oder einen völlig falschen Schrankenwert ausweist - mein Bauchgefühl in Bezug auf die möglicherweise fehlende Stabilität der Ergebnisse war wohl richtig :) !
Schlumpinator
Beiträge: 7
Registriert: So Mai 03, 2020 1:20 pm

Re: Exponentielles Modell als Anfang für logistisches

Beitrag von Schlumpinator »

Danke, dass du das extra ausprobiert hast! Auf der anderen Seite ermöglicht SSlogis es aber ja auch nicht, den Schrankenwert bzw. Wert der Asymptote, an den sich die Kurve annäher, selbst zu definieren. Oder liege ich da falsch? Und vor allem: Wie komme ich dahin?

Hier mal meine Werte:

Code: Alles auswählen

y<-c(43,55,74,102,138,184,226,285,362,474,626,832,1091,1430,1882,2461,3120,3856,4660)
x<-seq(1,19)
Lineare Regression mit

Code: Alles auswählen

lm(log(df$y)~df$x)
ergibt

Code: Alles auswählen

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 3.549490   0.023212   152.9   <2e-16 ***
df$x        0.263405   0.002036   129.4   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.0486 on 17 degrees of freedom
Multiple R-squared:  0.999,	Adjusted R-squared:  0.9989 
F-statistic: 1.674e+04 on 1 and 17 DF,  p-value: < 2.2e-16
Das bedeutet doch, dass die Änderungsrate exp(0.263405) im exponentiellen Modell ist, oder? Wenn ich das doch weiß und den Schwellwert und max. Annäherungswert unterstellen möchte, dann muss es doch möglich sein die logistische Funktion dazu zu berechnen. Oder bin ich komplett neben der Spur?

Sorry wenn das hier jetzt total Realitätsfremd für dich klingt... aber mich lässt das nicht mehr los!
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Exponentielles Modell als Anfang für logistisches

Beitrag von Athomas »

Ich glaube, Du solltest Dich davon lösen, die Parameter des Exponential-Fits für die Bestimmung der "optimalen" logistischen Funktion nutzen zu wollen!?

Code: Alles auswählen

y<-c(43,55,74,102,138,184,226,285,362,474,626,832,1091,1430,1882,2461,3120,3856,4660)
x<-seq(1,19)

DF       <- data.frame(x,y)

plot(x,y)

fit      <- nls(y ~ SSlogis(x, Asym, xmid, scal), DF)
fit
DF.neu   <- data.frame(x=(20:25))
DF.neu$y <- predict(fit, newdata=DF.neu)
Schlumpinator
Beiträge: 7
Registriert: So Mai 03, 2020 1:20 pm

Re: Exponentielles Modell als Anfang für logistisches

Beitrag von Schlumpinator »

Du hast recht. Deine Lösung funktioniert soweit wunderbar! Vielen Dank dafür :-) Habe das Gefühl ich lerne gerade viel dazu!

Leider bleibt noch das Problem, dass die Werte für xmid und Asym so nicht vorher bestimmt werden können.

Code: Alles auswählen

fit      <- nls(y ~ SSlogis(x, Asym=20000, xmid, scal), DF)

#führt zu
#Fehler in nlsModel(formula, mf, start, wts) : 
#singuläre Gradientenmatrix bei der ersten Parameterschätzung

Der nächste Versuch:
SSlogis benutzt ja die Funktion

Code: Alles auswählen

Asym/(1+exp((xmid-input)/scal))
um die Werte zu fitten. Doch auch:

Code: Alles auswählen

fit <- nls(y ~ Asym/(1 + exp((xmid - x)/scal)),
                data = DF,
                start = list(Asym = 20000, xmid = 10000, scal = 1))
                
 #führt zu
#Fehler in nlsModel(formula, mf, start, wts) : 
#singuläre Gradientenmatrix bei der ersten Parameterschätzung
Ich steh' auf dem Schlauch. Oder ich find den Schlauch nicht..
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Exponentielles Modell als Anfang für logistisches

Beitrag von Athomas »

xmid = 10000
:shock:
Schlumpinator
Beiträge: 7
Registriert: So Mai 03, 2020 1:20 pm

Re: Exponentielles Modell als Anfang für logistisches

Beitrag von Schlumpinator »

okay, der Smiley hat gereicht mir zu zeigen, dass ich unter xmid immer den y-Wert im Wendepunkt verstanden habe... (warum auch immer, ich brauch mal ne pause)

Trotzdem ergibt

Code: Alles auswählen

fit      <- nls(y ~ SSlogis(x, Asym, xmid=23, scal), DF)
oder

Code: Alles auswählen

fit      <- nls(y ~ SSlogis(x, Asym=18000, xmid, scal), DF)
auch den Fehler "Fehler in nlsModel(formula, mf, start, wts) :
singuläre Gradientenmatrix bei der ersten Parameterschätzung"
Athomas
Beiträge: 769
Registriert: Mo Feb 26, 2018 8:19 pm

Re: Exponentielles Modell als Anfang für logistisches

Beitrag von Athomas »

Code: Alles auswählen

> fit <- nls(y ~ Asym/(1 + exp((xmid - x)/scal)),
+            data = DF,
+            start = list(Asym = 18000, xmid = 23, scal = 4))
> fit
Nonlinear regression model
  model: y ~ Asym/(1 + exp((xmid - x)/scal))
   data: DF
     Asym      xmid      scal 
12366.844    20.638     3.306 
 residual sum-of-squares: 9262

Number of iterations to convergence: 5 
Achieved convergence tolerance: 2.449e-06
Antworten