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()