ロジスティック曲線     Last modified: Sep 07, 2009

例題

 「表 1 に示すようなデータに曲線をあてはめなさい。」

表 1.テストデータ
$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.0 37.8 52.6 66.9 78.6 87.0 92.4 95.7 97.6 98.6 99.2


考え方

  1. 元のデータをプロットすると図 1 のようになる。

    figure

    図 1.元データのプロット

  2. 独立変数は,1から始まる連続する整数とする。従属変数は全て正の値でなければならない( 0 も不可 )。

    注1: より妥当なあてはめを行う場合には,非線形最小二乗あてはめを行う。

    注2: データが飽和点に達していない部分のみ( 指数的な増加部分だけ )の場合には,あてはめに失敗する場合がある。このような場合には非線形最小二乗法によるあてはめを行う。

  3. ロジスティック曲線を表す $(1)$ 式の両辺の逆数をとると,$(2)$ 式のようになる。 \[ y = \frac{a}{1+b\ \exp(-c\ x)} \tag{1} \] \[ \frac{1}{y} = \frac{1}{a}+\frac{b}{a}\exp(-c\ x) \tag{2} \]
  4. ここで,$Y = 1 / y$,$A = 1 / a$,$B = b / a$ とおくと $(3)$ 式のようになる。 \[ Y = A+B\ \exp(-c\ x) \tag{3} \]
  5. $(3)$ 式は,未知のパラメータ $A$,$B$ については線形であるが,$c$ については非線形である。そこで,以下のような逐次的に近似する手法をとる。

    1. パラメータ $c$ の初期近似値を $c_{1}$ とする( $c = c_{1} + \delta$ )。 \[ \exp(-\ x) ≒ \exp(-c_1\ x)-\delta\ x\ \exp(-c_1\ x) \]
    2. $(3)$ 式に代入して, \[ Y = A+B\left \{ \exp(-c_1\ x)-\delta\ x\ \exp(-c_1\ x) \right \} \]
    3. $X_{1} = \exp ( - c_{1} x )$ ,$X_{2} = x\ \exp ( - c_{1} x )$ ,$C = B\ \delta$ とおくと, \[ Y = A+B\ X_1-C\ X_2 \tag{4} \]
    4. $(4)$ 式は,2 個の独立変数( $X_{1}$,$X_{2}$ )からなる重回帰式であるので,$A$,$B$,$C$ を求めることができる。

    5. $c$ の近似値 $c_{1}$ の改良値 $c_{2}$ は,$\delta = C / B$ であるから,$c_{2} = c_{1} + \delta$ と表される。$a = 1/A$,$b = a \times B$ である。

    6. パラメータ $c$ の修正量 $\delta$ が十分小さくなるまで $(4)$ 式の重回帰式を繰返して計算する。

    例題では,$c_{1} = 0.5$ とすると以下のようになる。

    c1 = 0.5
    
               x        y     Y=1/y       X1        X2
                1      2.9   0.34483  0.60653   0.60653
                2      5.2   0.19231  0.36788   0.73576
                3      9.1   0.10989  0.22313   0.66939
                4     15.5   0.06452  0.13534   0.54134
                5     25.0   0.04000  0.08208   0.41042
                6     37.8   0.02646  0.04979   0.29872
                7     52.6   0.01901  0.03020   0.21138
                8     66.9   0.01495  0.01832   0.14653
                9     78.6   0.01272  0.01111   0.09998
               10     87.0   0.01149  0.00674   0.06738
               11     92.4   0.01082  0.00409   0.04495
               12     95.7   0.01045  0.00248   0.02975
               13     97.6   0.01025  0.00150   0.01954
               14     98.6   0.01014  0.00091   0.01277
               15     99.2   0.01008  0.00055   0.00830
    
    A = 0.0109069
    B = 0.6005591
    C = 0.0514861
    
    a = 1 / 0.0109069161041176 = 91.6849447134258
    b = 0.600559139008607\times 91.6849447134258 = 55.0622314571467
    c2 = 0.5 + 0.0514861465374784 / 0.600559139008607 = 0.585730352255518
    
               x        y     Y=1/y       X1        X2
                1      2.9   0.34483  0.55670   0.55670
                2      5.2   0.19231  0.30991   0.61983
                3      9.1   0.10989  0.17253   0.51759
                4     15.5   0.06452  0.09605   0.38419
                5     25.0   0.04000  0.05347   0.26735
                6     37.8   0.02646  0.02977   0.17860
                7     52.6   0.01901  0.01657   0.11600
                8     66.9   0.01495  0.00922   0.07380
                9     78.6   0.01272  0.00514   0.04622
               10     87.0   0.01149  0.00286   0.02859
               11     92.4   0.01082  0.00159   0.01751
               12     95.7   0.01045  0.00089   0.01063
               13     97.6   0.01025  0.00049   0.00641
               14     98.6   0.01014  0.00027   0.00384
               15     99.2   0.01008  0.00015   0.00229
    
    A = 0.0101096
    B = 0.6125705
    C = 0.0116214
    
    a = 1 / 0.0101096240700802 = 98.9156464244343
    b = 0.61257050663961\times 98.9156464244343 = 60.5928076448002
    c2 = 0.58573 + 0.0116213723541889 / 0.61257050663961 = 0.604701485287368
    					:
    					:
    

figure

図 2.あてはめ結果

・ R で計算してみる


演習問題


応用問題


・ 直前のページへ戻る  ・ E-mail to Shigenobu AOKI