Was ist der schmerzfreieste Weg, um logistische Wachstumskurven in R anzupassen?


19

Dies ist für Google nicht so einfach wie für einige andere Dinge, da ich nicht über logistische Regression in dem Sinne spreche, dass Regression zur Vorhersage kategorialer Variablen verwendet wird.

Ich spreche von der Anpassung einer logistischen Wachstumskurve an bestimmte Datenpunkte. Genauer gesagt ist ein bestimmtes Jahr von 1958 bis 2012 und die geschätzten globalen CO2-ppm (parts per million von Kohlendioxid) im November des Jahres .xyx

Im Moment beschleunigt es sich, aber irgendwann muss es abflachen. Ich möchte also eine logistische Kurve.

Ich habe noch keinen relativ einfachen Weg gefunden, dies zu tun.


3
Eine logistische Kurve ist nicht die einzige Kurve, die sich abflacht. In der Tat würde ein Vielfaches eines kontinuierlichen cdf diese Anforderung erfüllen.
Glen_b

2
Package Grofit verwenden Verwendet Spline- und Wachstumskurven.

Nick, vielen Dank, dass du deinen Code eingegeben hast. Ich habe mich nur gefragt, wie ich ihn als Gleichung schreiben soll. im Code beziehen sich die Werte C, a und K auf welche Parameter?

1
Ich glaube du nimmst mich als @ user2581681. Ich habe gerade ihre Antwort bearbeitet.
Nick Cox

Antworten:


19

Siehe die nls()Funktion. Es hat eine selbststartende logistische Kurvenmodellfunktion über SSlogis(). ZB von der ?nlsHilfeseite

> library("nls")
> DNase1 <- subset(DNase, Run == 1)
>      
> ## using a selfStart model
> fm1DNase1 <- nls(density ~ SSlogis(log(conc), Asym, xmid, scal), 
+                  DNase1)

Ich schlage vor, Sie lesen die Hilfeseiten für diese Funktionen und wahrscheinlich die verknüpften Verweise, wenn möglich, um mehr zu erfahren.


9

Ich hatte vor einiger Zeit die gleiche Frage. Folgendes habe ich gefunden:

Fox und Weisberg haben einen großartigen Zusatzartikel geschrieben, der die nls-Funktion verwendet (sowohl mit als auch ohne die von Gavin erwähnte Selbststartoption). Es kann hier gefunden werden:

http://socserv.mcmaster.ca/jfox/Books/Companion/appendix/Appendix-Nonlinear-Regression.pdf

In diesem Artikel habe ich eine Funktion für meine Klasse geschrieben, die verwendet werden kann, wenn eine logistische Kurve an ihre Daten angepasst wird:

###Log fit - be sure to use quotes around the variable names in the call
log.fit <- function(dep, ind, yourdata){
#Self-starting...

y <- yourdata[, dep]
x <- yourdata[, ind]

log.ss <- nls(y ~ SSlogis(x, phi1, phi2, phi3))

#C
C <- summary(log.ss)$coef[1]
#a
A <- exp((summary(log.ss)$coef[2]) * (1/summary(log.ss)$coef[3]))
#k
K <- (1 / summary(log.ss)$coef[3])

plot(y ~ x, main = "Logistic Function", xlab=ind, ylab=dep)
lines(0:max(x), predict(log.ss, data.frame(x=0:max(x))), col="red")

r1 <- sum((x - mean(x))^2)
r2 <- sum(residuals(log.ss)^2)

r_sq <- (r1 - r2) / r1

out <- data.frame(cbind(c(C=C, a=A, k=K, R.value=sqrt(r_sq))))
names(out)[1] <- "Logistic Curve"

return(out)
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.