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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Python

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

受付中

【Python】2次関数に対するBiweight推定法のやり方がわかりません

shirataki_udon
shirataki_udon

総合スコア0

Python

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

1回答

-3評価

0クリップ

180閲覧

投稿2022/05/02 04:08

編集2022/05/09 21:18

Pythonについての質問です。
学校の課題で、2つのデータx,yの近似曲線、f(x)=a+b/x+c/(x^2)のa,b,cの値を最小二乗法とBiweight推定法(重さを追加して外れ値の影響を少なくする手法)を用いて求めるプログラムをかく課題が出されました。(x,yのデータはエクセルに用意されている)

そこで、最小二乗法でデータに沿った曲線をひくことはできたのですが、そこから重さを入れて計算をする方法がわかりません。
イメージとしては以下のサイトのような計算を2次関数でa,b,cの3つの変数を使ってやりたいと思っています。
URL:https://qiita.com/nn_tok/items/95a3baccacc492972fd4

自分なりにBiweight推定法について調べてみましたが、ネットにある記事だと1次関数を取り扱っているものしかなく、f(x)のような2次関数のものについてはどうしたらいいのかわからず、手詰まり状態です。

分かる方がいらっしゃいましたら、何卒お教えください。
※投稿主はPython初心者のため、できればわかりやすく説明していただけると助かります。

**現在のコード
**
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import statistics as st

df = pd.read_excel("○○○.xlsx", sheet_name = "○○○", skiprows=9,usecols="B:C")
print(df)

#シートの最終行を取得
Sheet_Max = len(df)

#配列宣言
x_1 = df["xi"].to_list()

y_1 = df["yi"].to_list()

x = np.array(x_1)
y = np.array(y_1)

coe = np.polyfit(x,y,2)
z2 = np.poly1d(coe)(x)
print(coe)

print(coe[0])

plt.scatter(x, y, color="k")
plt.plot(x,z2)
plt.show()

**表示結果
**イメージ説明

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

fana

2022/05/02 06:17

> ※投稿主はPython初心者のため そんなことは「Biweight推定法ってどうすればいいの?」という話には関係なくないですか? 質問文から,最小二乗法の方に関してはできたのだと推測します. その最小二乗評価関数はどうなりましたか? Σ(「誤差」の2乗) という形にしたハズですが,この【「誤差」の2乗】値を評価するのが「最小二乗」ですよね. で,2乗ではない別の関数で評価するのがM推定法と呼ばれる方法であって,M推定の中で特定の関数を使う物を Biweight と呼ぶ,という話でしょうから,「誤差」をその(Biweightなる)関数で用いればよいだけの話ではないでしょうか.

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Python

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