Rのロジスティック成長曲線を近似する最も簡単な方法は何ですか?


19

これは、明確にするために、カテゴリ変数を予測するために回帰を使用するという意味でロジスティック回帰について話していないので、Googleにとって他のことほど簡単ではありません。

ロジスティック成長曲線を特定のデータポイントに適合させることについて話しています。具体的には、は1958年から2012年までの特定の年であり、は年の11月の推定CO2 ppm(二酸化炭素の百万分の1)です。y xxyバツ

今は加速していますが、ある時点で横ばいになります。ロジスティックカーブが必要です。

これを行う比較的簡単な方法はまだ見つかりませんでした。


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

私は少し前に同じ質問をしました。これは私が見つけたものです:

FoxとWeisbergは、nls関数を使用した素晴らしい補足記事を書きました(Gavinが言及した自己開始オプションの有無にかかわらず)。ここにあります:

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)
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.