前提・実現したいこと
重み付き最小二乗法をするにあたり、以下の式のsigmaを求める必要があります。
popt, pcov = curve_fit(func, x, y, sigma=sigma, absolute_sigma=True)
この標準偏差sigmaを測定値(x,y)から作成したいと思っております。
測定値
x = np.array([6.26379, 8.57417, 8.66527, 8.75069, 11.6708, 12.3487, 14.5032, 15.7422, 21.7646, 23.0518, 26.5069, 26.4035, 26.321, 23.0045, 19.2654, 17.9425, 14.5669, 13.513, 10.4902, 9.95136, 9.77395]) y = np.array([3.709910308, 3.300454417, 3.219869361, 2.879991517, 2.250120678, 2.24981186, 1.859931899, 1.839996231, 1.560029151, 1.360016958, 1.210037387, 1.527926405, 1.320005022, 1.340038138, 1.618120234, 1.410033737, 1.83006856, 1.849465938, 2.141939621, 2.219958336, 2.494675074])
数列×数列→数列 として定義したいのですが、そんな事可能なのでしょうか?
どうも理解できません。
質問は何でしょうか?「数列×数列→数列 として定義したい」とは、具体的には何ですか?
前の質疑を咀嚼されてから、新たに質問を立てた方が良いです。sigmaは質問者様にしか知り得ないのでは?というのが前の質問から一貫しての私の回答です。(1)母集団としてのモデルからsigmaを求める、(2)標本からsigmaを求める、の2通りがありえますが、どちらもコード以前に統計的知識がかなり必要に思います。前者については母集団を知る質問者様にしか分かり得ませんし、後者はこれだけの数の標本から求めるのは困難であると思います。この数の標本からは通称の平均、分散、せいぜい不偏分散を求めるだけしかできないと思います。
何か研究のテーマでWLSを使いたい・使う必要がある、という背景はこれまでの質問で理解しましたが、一方で質問者様がWLSとは何か、を全くご理解されていない、ということも分かりました。いったん、terateilを離れて、統計学として勉強された方が早いです。私もちゃんとわかっているわけではありませんし、terateilで統計学レベルの質問をするのは最適ではないと思います。
なお、curve_fitのsigmaは単なる標準偏差ではなく、ydataに対応した不確かさ設定で数値の1次元配列か2次元行列ですので、単なる標準偏差と呼ぶと皆さん誤解されると思います。
http://www.yamamo10.jp/yamamoto/comp/Python/library/SciPy/fit/index.php
xdataもydataも数列なので、sigmaとしてxdataとydataを入力として求める関数が必要ですよ、と伝えています。数列×数列→数列というのは、積写像を表す記法で、数列=関数(数列, 数列)を表しているだけですが、ご存知ありませんか?なおかつ、それをいきなり作るのは大変なので、スカラー×スカラー→スカラー(この×も掛け算じゃ無いです)の関数を作ってから、numpyで「数列対応化」をするとよい、と回答しました。この辺までご理解していないのであれば、以前の回答で質疑をお願いします。
通常の最小二乗法ではなく、「重み付き」にこだわる理由は何でしょう?
本来はsigmaにセットすべきものが分かっているから重み付きにするのであって、フィッティング対象の測定データから重みを求めるのは、違う手法になると思います。
皆様。コメントありがとうございます。
この質問に関しましては、自分の理解がよく出来ていないうちに、軽率な質問を挙げてしまいました。
皆様の貴重なお時間を頂いてしまい、申し訳ありません。
再度勉強しなおしてから、この部分に関しましては質問させていただきたいと思います。
何卒宜しくお願いいたします。
回答1件
あなたの回答
tips
プレビュー