Web教材一覧統計・確率

成長曲線(ゴンペルツ曲線とロジスティック曲線)

キーワード

成長曲線、ゴンペルツ曲線、ロジスティック曲線


生物の個体数、新製品の販売数、プログラムのバグ発見数など、当初は少なく、中途で大きくなり、その後また少なくなるような現象は多くあります。それを時間の推移と累積量をグラフにすると、下図のようになります。これを成長曲線といいます。
 代表的な成長曲線に、ゴンペルツ曲線ロジスティック曲線があります。
 両者とも、似たようなS字型の曲線で、時間xが経つにつれ、増加が止まり一定値Kに近づきます。ロジスティック曲線は変曲点を中心に左右対称になりますが、ゴンペルツ曲線は対称性がないのが大きな特徴です。

実際には、時間が負になるのは不適切ですが、t=x+t0のような変換により、t≧0としてこれらの曲線を利用します。

ゴンペルツ曲線(Gompertz curve)

ゴンペルツ曲線は、
  ・・・ゴンペルツ曲線の式
をグラフにしたものです。
 この式は、
   dy/dx = Ay×e-Bx   ・・・微分方程式
から得られたものです。
 dy/dx は、yの増加率を示しています。すなわち、yの増加率は、
   直前のyに比例して増加する要因
   時間xに伴い指数的に減少する要因
に関係することを表しています。

ゴンペルツ曲線は、このような性質をもった曲線です。
 右図は、K=1として、bとcを変化させたものです。
  x→∞ のとき:e-cx→0、b0=1、y→K
  x=0 のとき:e-cx=1、y=Kb
  x→-∞のとき:e-cx→∞、y→b→0
(0<b<1 であることが必要です)になります。

b=0.3、c=0.5のとき(赤線)のグラフでいえば、x0(x=0)のとき、y0=Kb=1×0.3=0.3になっています。bはy0の値を決める要素であり、cは傾きの程度を示していることがわかります。

なお、yがαKになるxは、
= αK
より、次の式が得られます。
   x=(1/c)*log(logb/logα)
 ここで、b=0.3、c=0.5のときに、いくつかのαを与えると、次のようになります。
   x=(1/0.5)*log(-1.204/logα)
     α= 0.5  0.5  0.9  0.99
     x= 1.104 4.872 6.312 9.572

 この曲線が、プログラムバグ発見数の累積だとすれば、95%のバグが発見されるのはx=6.3の時点であると予想されます。

ロジスティック曲線(Logistic curve)

ロジスティック曲線は、
   ・・・ロジスティック曲線の式
をグラフにしたものです。
 生物は親から生まれるので、生物の個体数の増加率 dy/dt は直前の個体数yに比例すると考えられます。それで、
   dy/dt = ry
と表現できます。
 しかし、現実には無限に増大することはありません。その限界値Kに近づくと増加率は低下するはずです。それを加味すると、
   dy/dt=ry(K-y)   ・・・微分方程式
となります。ロジスティック曲線の式は、このような関係から導き出されたのです。
 生物成長の観点では、t≧0であり、t0(t=0)のときy=0となりますが、ロジスティック曲線の式では、一般化するために、その条件を無視しています。それで、x=t+t0とし、t0=-∞としています。すなわち、生物ははるか昔に発生したというかたちになっています。

ロジスティック曲線の式を検討します。
   x→∞ のとき:e-cx→0、分母→1、y→K
   x=0 のとき:e-cx=1、分母=1+b、y=K/(1+b)
   x→-∞のとき:e-cx→∞、y→0
になります。
 また、微分方程式から、dy/dtが最大になる(増加率が最大になる)のは、y*=K/2のときです。ロジスティック曲線の式から、そのときのxを求めると、
  x*= (logb-log2)/c
となります。なお、yがαKになるxは、
= αK
より、次の式が得られます。
     logb-log((1/α)-1)
   x=────────────
          c
ここで、
    α   log((1/α)-1)
   0.5    0
   0.9   -2.197
   0.95  -2.944
   0.99  -4.595

右図は、K=1とし、bとcを変化させてグラフにしたものです。b=3、c=1のグラフ(赤)についていえば、x=0のとき、y0=1/(1+3)=2.5になっています。また、増加率が最大になるのは、x*= (log3-log2)/1=1.098-0.693=0.405、y*=1/2=0.5になっています。
 また、bによりy0が決まること、cにより傾きが変わることがわかります。

成長曲線へのあてはめ

測定したデータから、ゴンペルツ曲線やロジスティック曲線の式を求める、すなわち、K、b、cを決定することを考えます。
 どちらの式も非線形ですので、かなり高度な数学が必要となります。また、繰り返し言及しているように、現実のデータの期間はt≧0であるのにたいして、これらの式は、-∞<x<∞の範囲です。それで、例えばt=1ののデータをx=-5、x=-10のデータであるというようにずらす必要がありますが、それまでも自動的に(統計学的に)行おうとすると、さらに複雑な数学が必要になります。
 それでここでは、かなり単純化した方法にします。そのため、「よく近似する」式にはならないことをお断りしておきます。よく近似する式が必要なときは、専門の統計パッケージを利用してください。

●データの時期の調整
 ここでは、t→xに関しては、過去データの散布図などにより、調整されているものとします。すなわち、実際には、t=0、1、・・・、nという時点で測定されたのですが、それを、x=-j、-j+1、・・・、0,1、・・・、k-1、kであるというように調整できたとします。
 後述するように、そのずらしの範囲を与えて、いくつかのケースで計算するようにします。

●ゴンペルツでのcの取扱い
 ゴンペルツ曲線の式を適宜変形すると、
   logy=logK+e-cxlogb
となります。
 ここで、Y=logy、P=logK、Q=logb、X=e-cxとすれば、
   Y=P+QX
となるので、最小二乗法によりPとQを決定することができます。
 そして、K=e、b=eの逆変換をすることから、Kとbが求められます。

ところが、それには未知数であるcを事前に与える必要があります。cに初期値を与えて逐次的に改善する方法があるのですが、かなり複雑になります。それで、現実離れしていますが、ここでは、
   cの最小値と最大値を与えて、いくつかのcの値を仮定して計算する。
ことにします。

●ロジスティックでのKの取扱い
 ロジスティック曲線を適宜変形すると、
   log(K/y-1)=logb-cx
となります。
 ここで、Y=log(K/y-1)、P=logb、(Q=-c)
とすれば、
   Y=P+Qx
となるので、最小二乗法によりPとQを決定できます。
 そして、b=e、c=-Qの逆変換により、bとcが求められます。

ところが、このYには未知数であるKが含まれています。既にxが大で、Kに近いデータが存在するのであれば、Kを推定することができますが、実務的には、かなりxが小さい時点でKを知りたいことが目的の場合があります。ここでは、
   Kの最小値と最大値を推測して与えることにより、それぞれのKにおけるBとcを求める
ことにします。


●計算プログラム
 すなわち、ここの計算プログラムは、
  ・t→xの変換は利用者が既に行っている。
  ・一部のパラメータ(ゴンペルツではc、ロジスティックではK)の値を利用者が仮定する。
ことを前提にして、
  ・変換処理を行い、Y=P+Qxの形にして、
  ・最小二乗法によりPとQを計算し、
  ・逆変換処理により(先に仮定したものを加えて)、パラメータK、b、cを求める
こととします。
 しかし、t→x、c、Kを1点で与えたのでは、近似式を得るまでの操作が大変なので、
  ・最小値と最大値の幅ときざみを与える
ことにより、いくつかのケースを連続的に行い、その結果により、利用者がより適切なパラメータの値を設定しやすいようにしました。
 また、おまけ的ですが、
  ・入力値と計算値の誤差を出力する。
  ・α=50%、90%などのxを求める。
を行ないます。

個数n=
x:
y:
t:最小値= 最大値= きざみ=
K:最小値= 最大値= きざみ=

c:最小値= 最大値= きざみ=

出力量が非常に大きいので、新Webページに出力します。


「確率・統計」の目次