🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

795閲覧

標準偏差sigmaをx, yから求める関数を作成したいです

kikuchiX

総合スコア8

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/11/22 05:30

前提・実現したいこと

重み付き最小二乗法をするにあたり、以下の式の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])

数列×数列→数列 として定義したいのですが、そんな事可能なのでしょうか?
どうも理解できません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/11/22 06:06

質問は何でしょうか?「数列×数列→数列 として定義したい」とは、具体的には何ですか?
toast-uz

2020/11/22 06:24 編集

前の質疑を咀嚼されてから、新たに質問を立てた方が良いです。sigmaは質問者様にしか知り得ないのでは?というのが前の質問から一貫しての私の回答です。(1)母集団としてのモデルからsigmaを求める、(2)標本からsigmaを求める、の2通りがありえますが、どちらもコード以前に統計的知識がかなり必要に思います。前者については母集団を知る質問者様にしか分かり得ませんし、後者はこれだけの数の標本から求めるのは困難であると思います。この数の標本からは通称の平均、分散、せいぜい不偏分散を求めるだけしかできないと思います。 何か研究のテーマでWLSを使いたい・使う必要がある、という背景はこれまでの質問で理解しましたが、一方で質問者様がWLSとは何か、を全くご理解されていない、ということも分かりました。いったん、terateilを離れて、統計学として勉強された方が早いです。私もちゃんとわかっているわけではありませんし、terateilで統計学レベルの質問をするのは最適ではないと思います。
toast-uz

2020/11/22 07:39 編集

なお、curve_fitのsigmaは単なる標準偏差ではなく、ydataに対応した不確かさ設定で数値の1次元配列か2次元行列ですので、単なる標準偏差と呼ぶと皆さん誤解されると思います。 http://www.yamamo10.jp/yamamoto/comp/Python/library/SciPy/fit/index.php xdataもydataも数列なので、sigmaとしてxdataとydataを入力として求める関数が必要ですよ、と伝えています。数列×数列→数列というのは、積写像を表す記法で、数列=関数(数列, 数列)を表しているだけですが、ご存知ありませんか?なおかつ、それをいきなり作るのは大変なので、スカラー×スカラー→スカラー(この×も掛け算じゃ無いです)の関数を作ってから、numpyで「数列対応化」をするとよい、と回答しました。この辺までご理解していないのであれば、以前の回答で質疑をお願いします。
bsdfan

2020/11/22 08:16

通常の最小二乗法ではなく、「重み付き」にこだわる理由は何でしょう? 本来はsigmaにセットすべきものが分かっているから重み付きにするのであって、フィッティング対象の測定データから重みを求めるのは、違う手法になると思います。
kikuchiX

2020/11/23 09:12

皆様。コメントありがとうございます。 この質問に関しましては、自分の理解がよく出来ていないうちに、軽率な質問を挙げてしまいました。 皆様の貴重なお時間を頂いてしまい、申し訳ありません。 再度勉強しなおしてから、この部分に関しましては質問させていただきたいと思います。 何卒宜しくお願いいたします。
guest

回答1

0

ベストアンサー

数列×数列→数列 として定義したい

標準偏差はスカラー値です。数列にはなりえません。xとyについて各標準偏差を求めるということですか?それならば数列→スカラー値という関数(を二回使う)のはずです。

投稿2020/11/22 06:25

HogeAnimalLover

総合スコア4830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問