Excelを使って双曲線の近似式を作成する

データ分析

 Excelには線形近似や対数近似、指数近似など近似曲線を作成してくれる機能がありますが、双曲線近似を作成してくれる機能がありません。では、
\begin{align}
Y=\dfrac{a}{X}
\end{align}
といった近似や
\begin{align}
Y=\dfrac{aX+b}{cX+d}
\end{align}
といった双曲線近似したい場合には、どうしたらいいのか、このページで解説していきたいと思います。

\(y=\frac{a}{X}\) の近似式を作成

 上述の4つのデータから、
\begin{align}
Y=\dfrac{a}{X}
\end{align}
という近似式を求めてみます。

(参考)
上述の4つのデータは \(Y=\dfrac{1000}{X}\)という式をベースにして、\(X\),\(Y\)に誤差を加えたデータになっています。そのため、\(a=1000\) に近しい値の近似式が得られているか確認していきます。

今回、あえて やり方① と やり方② の2つをご紹介しますが、やり方①は非推奨です。やり方①で行ってしまいそうになりますが、やり方②で近似式を作成するようにしましょう。ぜひ結果を比較してみてください。

やり方①

\begin{align}
L(a)=\displaystyle \sum_{i=1}^{4} \left(\frac{a}{X_{i}}-Y_{i}\right)^{2}
\end{align}
を最小とする \(a\) をソルバーで求めます。

以下のように、\(a\) の初期値は適当に設定(今回は100とした)し、その \(a\) を使って計算した \(Y'(=a/x)\) と \(Y\) との誤差の2乗和 \(\left(Y’_{i}-Y_{i}\right)^{2}\) を計算します。 

そして、この誤差の2乗和が最小となるような \(a\) を求めるため、ソルバーのパラメーターを以下のように設定して解決ボタンを押します。

その結果、\(a=10561\) と求められます。

やり方②

\begin{align}
Y_{i}-\dfrac{a}{X{i}}\approx 0
\end{align}
ではなく、
\begin{align}
X_{i}Y_{i}-a \approx 0
\end{align}
であると考え、
\begin{align}
L(a)=\displaystyle \sum_{i=1}^{4} (X_{i}Y_{i}-a)^2
\end{align}
を極小化する \(a\) をソルバーで求めます。

以下のように、\(a\) の初期値は適当に設定(今回は100とした)し、 \( (X_{i}Y_{i}-a)^2\) の和を計算します。

そして、2乗和が最小となるような \(a\) を求めるため、ソルバーのパラメーターを以下のように設定して解決ボタンを押します。

その結果、\(a=9960\) と求められます。

やり方①が非推奨な理由

やり方①:\(a=10561\) 、 やり方①:\(a=9960\) となりました。

\(Y=\dfrac{1000}{X}\) をベースに作成したデータだったので、やり方②の精度が高いことがわかります。

やり方①が非推奨な理由は、\(Y\) の誤差しか考慮していない点にあります。

 ・\(Y_{1}=5000\) の誤差が+1%だった場合、 \(Y’_{1}=5050\)であり、その誤差の2乗は \(\left(Y_{1}-Y’_{1}\right)^{2}=2500\)

 ・\(Y_{1}=100\) の誤差が-20%だった場合、 \(Y’_{1}=80\)であり、その誤差の2乗は \(\left(Y_{1}-Y’_{1}\right)^{2}=400\)

となり、誤差の割合としては \(Y_{1}=80\) の方が大きいのに、誤差の2乗の大きさは \(Y_{1}=5050\) の方が大きいため、その誤差を小さくしようと \(Y_{1}=5050\) の方をより重視して \(a\) の値を決めてしまいます。

Excelにおける計算仮定を振り返ると、\(Y\) の値が大きいほど誤差の2乗の値が大きいことがわかります。これでは \(Y\) の値が大きい側のデータに合わせた近似式になってしまいます。



\(Y=\frac{aX+b}{cX+d}\) の近似式を作成

 上述の \(Y=\dfrac{a}{X}\) の例で示した「やり方②」と同様の考え方を用います。
\begin{align} Y_{i}-\dfrac{aX_{i}+b}{cX_{i}+d}\approx 0 \end{align} ではなく、 \begin{align} Y_{i}(cX_{i}+d)-(aX_{i}+b) \approx 0 \end{align} であると考え、 \begin{align} L(a)=\displaystyle \sum_{i=1}^{n} (Y_{i}(cX_{i}+d)-(aX_{i}+b))^2 \end{align} を極小化する \(a\),\(b\),\(c\),\(d\) をソルバーで求めます。

ただし、 \begin{align} Y=\dfrac{aX+b}{cX+d}=\dfrac{(a/c)X+b/c}{X+d/c} \end{align} であり、自由度は3なので、\(c=1\) とし\(a\),\(b\),\(d\) を変数セルとして設定することが一般的です。

コメント

タイトルとURLをコピーしました