tetsunosukeのnotebook

tetsunosukeのメモです

ロジスティック曲線へのあてはめ

下記のようなデータがあったときに、このデータの成長がどこで頭打ちになるかを調べる。

x 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
y 2.9 5.2 9.1 15.5 25 37.8 52.6 66.9 78.6 87 92.4 95.7 97.6 98.6 99.2
x <- 1:15
y <- c(2.9, 5.2, 9.1, 15.5, 25, 37.8, 52.6, 66.9,
       78.6, 87, 92.4, 95.7, 97.6, 98.6, 99.2)
plot(x,y)

f:id:kidd-number5:20111024085157p:image

> f = data.frame(x=x, y=y)
> f
  x    y
1 1  2.9
2 2  5.2
3 3  9.1
4 4 15.5
5 5 25.0
6 6 37.8
7 7 52.6
8 8 66.9
> ans = nls(y~SSlogis(x, a, b, c), f)
> ans
Nonlinear regression model
  model:  y ~ SSlogis(x, a, b, c) 
   data:  f 
     a      b      c 
99.890  6.824  1.663 
 residual sum-of-squares: 0.003256

Number of iterations to convergence: 1 
Achieved convergence tolerance: 1.863e-08 

求められた定数a,b,c に対して、
元のデータ

x <- 1:15
y <- c(2.9, 5.2, 9.1, 15.5, 25, 37.8, 52.6, 66.9,
       78.6, 87, 92.4, 95.7, 97.6, 98.6, 99.2)
x2 = 1:15
y2 = SSlogis(x, 99.89, 6.824, 1.663)
plot(x, y)
par(new=T)
plot(x2, y2, type="l") 

これで、既存データに対しての曲線のあてはめに成功しました。
f:id:kidd-number5:20111024085352p:image

x3=1:100
y3 = SSlogis(x3, 99.89, 6.824, 1.663)
plot(x3, y3, type="l")

このようにして、xが100まで行った時の曲線の様子を描画することができます。
18くらいの段階での成長が頭打ちになることが予測されます。
f:id:kidd-number5:20111024085548p:image