Какой самый безболезненный способ вписать кривые логистического роста в R?


19

Для Google это не так просто, как для некоторых других вещей, поскольку, для ясности, я не говорю о логистической регрессии в смысле использования регрессии для прогнозирования категориальных переменных.

Я говорю о подгонке кривой логистического роста к данным точкам данных. Чтобы быть точным, - это конкретный год с 1958 по 2012 год, а - расчетная глобальная доля CO2 (частей на миллион углекислого газа) в ноябре года .xyx

Сейчас он ускоряется, но в какой-то момент он должен выровняться. Поэтому я хочу логистическую кривую.

Я еще не нашел относительно простой способ сделать это.


3
Кривая логистики - не единственная кривая, которая «выравнивается». В действительности, кратное любого непрерывного cdf будет удовлетворять этому требованию.
Glen_b

2
Использование пакета grofit Использует сплайн и кривые роста.

Ник, большое спасибо за размещение твоего кода, мне было просто интересно, как написать его в виде уравнения? в коде значения 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.