• 締切済み

ロジスティック曲線の解法(最小二乗法)について困っています。

初めてgooを利用させて頂きます。 以下のロジスティック曲線の解法(a,bの解法)にいて、教えてください。(過去の実績を基に、将来値の推計する際に利用しようと思っています。) ロジステック曲線式 Y=K/(1+e^(a-bx)) Kは、定数。 で、a,bを求める解法がどうしても分かりません。 最小二乗法で求めるみたいですが・・・ a,bの答えは、以下のようになるのは、分かっております。 a=(Σx・Σxy-Σx^2・Σy)/{logx・(nΣx^2-ΣxΣy)} b=(nΣx^2-(Σx)^2)/(nΣxy-ΣxΣy) a,bを求める解法を教えてください。よろしくお願いします。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ちなみに、y=ax+bを最小二乗法を用いた解法は、 S=Σ(y-ax-n)^2 の最小値を求めるために、Sをa,bで微分して0と置いて解くまでは、理解して、a,bを求めることが出来ました。 ロジステックだと、aの分母にlogxが、なぜ付いてるのかが分かりません。

みんなの回答

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.3

 「分かっております」の式は明らかに嘘。  一瞥しておかしいと分かるのは、Σの外にxがある、という点です。実際に、a=... の式にデータを代入してaを計算しようと取りかかってみれば、すぐに立ち往生するでしょう。xというのはサンプル点の列x[k] (k=1,2,.....,n)のことであり、Σの中であれば、k=1,2...nについて総和を取ればよい。ですが、logxの所には、n個あるxのうち、はてさてどれを代入すりゃいいの??  つまり、そもそも式として体をなしていないんです。(おかしいところは、それだけじゃないのですが。)  じゃ、どうしましょうか。  既に出ている回答のように、非線形最小二乗法の問題として扱う。というのが、ご質問に対するストレートな回答でしょう。大変そうに見えても、やってみりゃどうということはありません。(詳しいやり方をご所望なら回答します。)  ところで「過去の実績を基に、将来値の推計する」ことの実務上の目的は何だろう。K(Yは最大幾らで頭打ちになるか)が既知だというのだから、あと予測したいと言えば、頭打ちになる時期なのではないか。たとえば「Kの95%に達するのはいつ頃か」とか。  そういう予測をしたいと思うような状況では、「過去の実績」をグラフにすると(立ち上がりの部分を除けば)ほとんど直線になってるかも知れません。だとすると、 Y = Ax+B A=Kb/4 B=(2-a)K/4 という直線(ご質問の式の、x=a/bにおける接線)をデータにフィッティングしたって大した違いはない。なぜならご質問にあるモデルでは、(A, Bから)a,bを決めれば曲線全体が決まってしまうからです。これをやる場合、Y≒KやY≒0のデータは、もしあれば単に捨ててしまう。  もしかして、いや「過去の実績」はまだ立ち上がり掛けたばかりのところであって、直線には見えない、ということですと、ご質問のモデルがホントに妥当そうなのか、まだ何とも言えず、この時点で立てた予測はかなり怪しい。幾ら非線形最小二乗法を使って丁寧に計算したって、さして役に立たないんじゃないでしょうか。  ところで、非線形最小二乗法でガチに答を出そうというのであっても、最初に出発点となる近似解を見つける必要があるんです。で、そのために、まずはこの直線をフィッティングすることになります。

回答No.2

こんにちは. まず,パラメター [a, b] で記述できるロジスティック曲線に乗ることが期待されるデータ列 (x1, y1),(x2, y2) …があるものとします. ここで,パラメター [a, b] で記述できるロジスティック曲線を L と書くとき, 残差平方和 Σ L(xi) - yi を最小とするような [a, b] を推定するものとします (以下,この関数を f(a, b) とします). 公式などで解が一息に計算できないのは残差平方和の関数 f(a,b) が パラメター [a, b] の二次元平面のどこで最小値となるか簡単に計算できないためです (実際,複雑な曲面になりそうな気がします). そこで, [a, b] に適切な値 [a', b'] を設定し, この近くの領域 [a' + a'', b' + b''] を考え, 残差平方和の関数 f(a' + a'' , b' + b'') が最小となるように [a'', b''] を動かすことにします. このために, f(a,b) を [a', b'] の近傍でテーラー展開し二次近似します. この近似した関数を g と書き, [a'', b''] の関数と見ると, その最小値を与える [a'', b''] はある線型方程式系(ここでは 2*2 です)の解として計算できます. そして,[a', b'] ← [a' + a'', b' + b''] と代入してパラメターを更新します. ただし,これは「二次近似した関数 g」の最小値を与えるパラメターですから, [a', b']近傍の関数の形によっては二次近似が良く機能せず, 元の関数の最小値を与えないことがあります. そこで,「関数の近似」と「パラメターの更新」を交互に反復し, 関数の値が減らなくなるまでこの手続きを反復します. この種の手続きは Newton 法と呼ばれ, 非線型最小二乗法を解くための標準的な手法の一つです. 他には Gauss-Newton 法 Levenberg-Marquardt 法などがあります. ただ,結構難しいので,細かいことを考えないのであれば, Excel のソルバを使うのが良いかもしれません. 「ロジスティック曲線 エクセル」等のキーワードで検索するとそれらしいものが出てきますよ.

hiro154649
質問者

お礼

ありがとうございます。 簡単に計算出来そうではないので、エクセル等を考慮してみます。 助かりました。

回答No.1

こんにちは. 何が聞きたいのか良く分かりませんが… > a,bの答えは、以下のようになるのは、分かっております。 であれば,答えはその通りであり,何の疑問もないように思います. *** ただし *** ,ロジスティック曲線の当てはめ問題は, 所謂 「非線型最小二乗問題」と呼ばれる種類の問題であり, 通常,データ x, y を公式に突っ込めばパラメターa, b, (場合によっては K も) が求まるという種類の問題ではありません. その「答え」とやら,本当に正しいと確信を持ってますか? また,直線当てはめについて勉強されているようですが, これは最小二乗法のなかでも「線型最小二乗法」という種類の問題だからこそ, 当てはめの公式が存在して簡単に解けるのです. 非線型最小二乗法はそれより進んだ内容なので,一般の場合, 単純に偏微分して零云々では解けません.

hiro154649
質問者

補足

丁寧な回答ありがとうございます。 ロジステック曲線の答えは、ネット上に答えだけ載っていたので、正しいと確信は、もっておりません。(どのネットのページかも今は分からなくなっています。) (説明不十分でしたが)今回の質問の意図は、「式からa,bを求める答えの導き方」が知りたかったです。 このロジスティック曲線は、直線式に当てはめただけでは、解くことが出来ないんですね。 この場合どういう方法で、解けばいいか教えて頂けませんか。

関連するQ&A