Що є найбільш безболісним способом підгонки логістичних кривих зростання в R?


19

Google це не так просто, як деякі інші речі, як, зрозуміло, я не кажу про логістичну регресію в сенсі використання регресії для прогнозування категоричних змінних.

Я говорю про пристосування логістичної кривої зростання до заданих точок даних. Якщо конкретніше, - це заданий рік з 1958 по 2012 рік, а y - розрахунковий глобальний об'єм CO2 (частки на мільйон вуглекислого газу) у листопаді року x .хух

Зараз він прискорюється, але в деякий момент його потрібно вирівняти. Тому я хочу логістичну криву.

Я поки не знайшов відносно прямого способу зробити це.


3
Логістична крива - не єдина крива, яка "вимикається". Дійсно, множина будь-якого безперервного файлу PDF задовольняє цю вимогу
Glen_b -Встановіть Моніку

2
Використання грофіту пакета Використовує криві сплайну та росту.

Нік, дуже дякую за те, що ви поставили свій код, мені було просто цікаво, як записати його як рівняння? у коді значення C, a і K відносяться до яких параметрів?

1
Я думаю, ти сприймаєш мене як користувача @ user2581681. Я щойно відредагував їх відповідь.
Нік Кокс

Відповіді:


19

Дивіться nls()функцію. Він має функціональну модель логістичної кривої самозапуску через SSlogis(). Наприклад, зі ?nlsсторінки довідки

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

Я пропоную вам прочитати довідкові сторінки щодо цих функцій та, можливо, пов’язані посилання, якщо можливо, щоб дізнатися більше.


9

У мене було те саме питання трохи раніше. Ось що я знайшов:

Фокс і Вайсберг написали чудову додаткову статтю, використовуючи функцію nls (як з, так і без варіанту самозапуску, згаданого Гевіном). Його можна знайти тут:

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

З цієї статті я закінчив писати функцію для свого класу, яка використовувалась для встановлення логістичної кривої до їх даних:

###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)
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.