質問をすることでしか得られない、回答やアドバイスがある。

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

ただいまの
回答率

88.60%

pythonの重み付き最小二乗法(WLS)を用いたパラメータの推定

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 140

kikuchiX

score 8

前提・実現したいこと

pythonの重み付き最小二乗法(WLS)を用いて、パラメータの推定を行いたいと思っています。
●観測データ

x = np.array([6, 8, 8.6, 8.7, 11.6, 12.3, 14, 15, 21, 23, 26, 26.4, 26.3, 23.1, 19, 17, 14.5, 13.5, 10, 9, 9.7])
y = 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

サイトにあるサンプルは、今のところなんとなく理解できているので、それを変形していただけると、涙が流れるほど嬉しいです。
是非、先生方のお力添えを頂ければと存じます。

何卒宜しくお願いいたします。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

今回の場合は、aが代数的に解けて、a=f(x, y)が作れます。

それをもとにx, yの観測値列から、aの配列を計算して、そこから線形回帰で特定のaをフィッティングすれば、よいのではないでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/11/22 13:37 編集

    コメントでの質問回答に対して、その回答でご理解されたのかどうかを明確にしてから、同系統の新規質問を立てていただくと助かります。どこまで理解された状態での新規質問なのか、意図を測り兼ねます。コメント蘭で、○○までは理解したけど、まだ△△が不明なので新規質問を立てます、とか宣言いただくと、意図が理解できて大変助かります。

    キャンセル

  • 2020/11/22 13:58

    WLSは通常の最小二乗法に重み1/σ^2を掛ける必要があるのだとわかりました(それすら理解できておりませんでした。)。WLSの重みを定義するに際し、新規に質問を立てたいと思います。

    キャンセル

  • 2020/11/22 14:53 編集

    「WLSは通常の最小二乗法に重み1/σ^2を掛ける必要がある」というご理解は正確ではないです。「WLSは通常の最小二乗法に一律では無い重みをかける必要がある」が正確であり、y^2/σ^2を掛けているのは私が引用したサイトで取っている方法例です。ちなみにyが入っているので、重みは一律ではありません。

    どういう重みが適切であるかは、数値の元となる統計量がどういった分布に従うと仮定しているかに依存しますので、質問者様でないとそれはわかりません。

    真のモデルに対して、観測値のばらつきが観測値によらず同じ分散を持つ正規分布である、と仮定しているのか通常の最小二乗法、観測値のばらつきが観測値に依存した分散を持つ正規分布である、と仮定しているのがWLSであり、観測値に依存した分散をどうするかは、プログラミングよりも前の世界の話です。誤差をどう考えるかですので、フィッティングしようとしている式とは関係無いと思います。

    キャンセル

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

  • ただいまの回答率 88.60%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る