算数
まず、線形回帰から始めます。多くの統計問題では、変数にいくつかの未知のパラメーターを持ついくつかの基礎となる分布があると想定し、これらのパラメーターを推定します。線形回帰では、従属変数yiが独立変数xijと線形関係にあると仮定します。
y i = xi1β1 + ... + xipβp +σεi 、i = 1、...、n 。
ここで、εiは独立した標準正規分布を持ち、βj 'sはp個の未知のパラメーターであり、σも未知です。これは行列形式で書くことができます:
Y =Xβ+σε、
ここで、Y、β、およびεは列ベクトルです。最良のβを見つけるために、二乗和を最小化します
S =(Y-Xβ)T(Y-Xβ)。
解決策を書き出すだけです。
β^=(X T X)-1XTY。
Yを特定の観測データと見なす場合、β^はその観測の下でのβの推定値です。一方、Yを確率変数と見なすと、推定量β^も確率変数になります。このようにして、β^の共分散が何であるかを見ることができます。
Yには多変量正規分布があり、β^はYの線形変換であるため、β^にも多変量正規分布があります。β^の共分散行列は次のとおりです。
Cov(β^)=(X T X)-1 X T Cov (Y)((X T X)-1 X T)T =(X T X)-1σ2。
ただし、ここではσが不明であるため、推定する必要があります。させたら
Q =(Y-Xβ^)T(Y-Xβ^)、
Q /σ2はn - p自由度のカイ二乗分布を持っていることが証明できます(さらに、Qはβ^に依存しません)。これにより
σ^ 2 = Q /(n --p)
σ2の偏りのない推定量。したがって、Cov(β^)の最終的な推定量は次のようになります。
(X T X)-1 Q /(n-p)。
SciPy API
curve_fit
が最も便利です。2番目の戻り値pcov
は、β^の共分散の推定値です。これは、上記の最終結果(X T X)-1 Q /(n --p)です。
ではleastsq
、2番目の戻り値cov_x
は(X T X)-1です。Sの表現から、X T XはSのヘッセ行列(正確にはヘッセ行列の半分)であることがわかります。そのため、ドキュメントcov_x
にはヘッセ行列の逆行列が記載されています。cov_x
共分散を取得するには、Q /(n --p)を掛ける必要があります。
非線形回帰
非線形回帰では、yiはパラメーターに非線形に依存します。
y i = f(x i、β1 、 ...、 βp ) + σεi。
βjに関するfの偏導関数を計算できるので、ほぼ線形になります。その場合、計算は基本的に線形回帰と同じですが、最小値を繰り返し近似する必要がある点が異なります。実際には、アルゴリズムは、のデフォルトであるLevenberg–Marquardtアルゴリズムなどのより洗練されたものにすることができますcurve_fit
。
シグマの提供に関する詳細
このセクションでは、のとパラメータについて説明sigma
しabsolute_sigma
ますcurve_fit
。curve_fit
Yの共分散について事前の知識がない場合の基本的な使用法については、このセクションを無視してかまいません。
アブソリュートシグマ
上記の線形回帰では、y iの分散はσであり、不明です。分散がわかっている場合。パラメータとセットをcurve_fit
介してに提供できます。sigma
absolute_sigma=True
sigma
提供された行列がΣであると仮定します。すなわち
Y〜N(Xβ、Σ)。
Yは、平均Xβと共分散Σの多変量正規分布を持ちます。Yの尤度を最大化する必要があります。Yの確率密度関数から、最小化と同等です。
S =(Y-Xβ)TΣ - 1(Y-Xβ)。
解決策は
β ^= ( XTΣ - 1X )-1XTΣ - 1Y。
と
Cov (β^)=(XTΣ - 1X)-1。
上記のβ^およびCov(β^)は、curve_fit
withの戻り値ですabsolute_sigma=True
。
相対シグマ
y iの正確な分散がわからない場合もありますが、異なるy i間の相対的な関係はわかっています。たとえば、y2の分散はy1の分散の4倍です。次に、パスして設定できます。sigma
absolute_sigma=False
今回
Y〜N(Xβ、Σσ)
既知の行列Σが提供され、未知の数σが与えられます。最小化する目的関数は、σが定数であるため絶対シグマと同じであり、したがって推定量β^は同じです。しかし、共分散
Cov(β^)= (XTΣ - 1X)-1σ2、
未知のσが含まれています。σを推定するには、
Q =(Y-Xβ^)TΣ - 1(Y-Xβ^)。
ここでも、Q /σ2は、n-p自由度のカイ2乗分布を持っています。
Cov(β^)の推定は次のとおりです。
(XTΣ - 1X )-1 Q /(n-p)。
そして、これはcurve_fit
withの2番目の戻り値ですabsolute_sigma=False
。