質問: np.array([3.7, 3.3, 3.2, 2.8, 2.2, 2.24, 1.8, 1.83, 1.5, 1.36, 1.21, 1.52, 1.3, 1.34, 1.61, 1.41, 1.8, 1.88, 2.11, 2.36, 2.4]) ``` ●フィッティングしたい式 ``` y=((-(a+(0.07*x))) + ((a+((0.07*x)**2)) - (4*0.07*math.log(0.1)))**0.5) / (2*0.07) ``` 推定したいパラメータ→「a」 ●問題 ・初心者すぎてpythonを使いこなせていない →いくつかサイトを見ると乱数で観測データを生成しているものがほとんどで、観測データ自体を扱っているものが皆無。そのため、手元のデータをどう扱っていいのか分からない。 ・WLSの説明のほとんどが直線回帰 →直線近似でWLSを用いているサイトは見つけたのですが、それをどう非線形に応用すればいいのか全く分かりませんでした。 ●主に参考にしているサイト ・https://scipython.com/book/chapter-8-scipy/examples/weighted-and-non-weighted-least-squares-fitting/ ・https://medium.com/micin-developers/decipher-github-lr-sw-40e519a13c0a サイトにあるサンプルは、今のところなんとなく理解できているので、それを変形していただけると、涙が流れるほど嬉しいです。 是非、先生方のお力添えを頂ければと存じます。 何卒宜しくお願いいたします。
回答: 今回の場合は、aが代数的に解けて、a=f(x, y)が作れます。 それをもとにx, yの観測値列から、aの配列を計算して、そこから線形回帰で特定のaをフィッティングすれば、よいのではないでしょうか?