σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyロードマップスキル
Ctrl K
AO
+1.2k 人の学習者
ログイン参加する ↗
ロードマップスキル
AO
+1.2k 人の学習者
ログイン
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyロードマップスキル
Ctrl K
AO
+1.2k 人の学習者
ログイン参加する ↗
ロードマップスキル
AO
+1.2k 人の学習者
ログイン
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
SciPy スキル›モジュール 1 · 当てはめと探索›トピック 1.6·~50 分中級

最小二乗法と曲線の当てはめ

スキル上の位置モジュール 1/3 · トピック 6/6
1.6 最小二乗法と曲線の当てはめ
—ラボスコア— / 100合計XP—連続日数—

誤差を小さくして曲線を当てはめる

多くのモデルは少数のパラメータをもつ曲線で、当てはめとは曲線がデータに近づくようにパラメータを選ぶことです。scipy.optimize.least_squares(fun, x0) がそれを行います。fun(p) はデータ点ごとの残差のベクトルを返す関数で、残差はモデルの値からデータの値を引いたものです。関数はコスト 12∑ri2\tfrac12\sum r_i^221​∑ri2​ を最小にします。出発点 x0 から、ヤコビ行列 JJJ(各パラメータが動くと各残差がどう変わるかの表)を使って進みます。ガウス・ニュートン法の1歩は J⊤J δ=−J⊤rJ^{\top}J\,\delta=-J^{\top}rJ⊤Jδ=−J⊤r を解き、パラメータを δ\deltaδ だけ動かします。パラメータについて線形なモデルなら、1歩で答えに着きます。bounds=(下限, 上限) はパラメータを妥当な範囲に保ちます。curve_fit は、モデル f(x,パラメータ)f(x,\text{パラメータ})f(x,パラメータ) をそのまま渡せる使いやすいラッパーです。

2乗誤差では1つの異常な点が支配的になり、残差 101010 は 100100100 と数えられます。ロバストな損失は、大きな残差に対して増え方がゆるやかです。loss='soft_l1'、f_scale=1 のとき罰則は ρ(z)=2(1+z−1)\rho(z)=2(\sqrt{1+z}-1)ρ(z)=2(1+z​−1)(zzz は残差の2乗)です。利回り曲線の当てはめが古典的な使い道です。ネルソン・シーゲル曲線は y(τ)=β0+β11−e−τ/λτ/λ+β2(1−e−τ/λτ/λ−e−τ/λ)y(\tau)=\beta_0+\beta_1\frac{1-e^{-\tau/\lambda}}{\tau/\lambda}+\beta_2\Big(\frac{1-e^{-\tau/\lambda}}{\tau/\lambda}-e^{-\tau/\lambda}\Big)y(τ)=β0​+β1​τ/λ1−e−τ/λ​+β2​(τ/λ1−e−τ/λ​−e−τ/λ) で、長期の水準 β0\beta_0β0​、傾き β1\beta_1β1​、こぶ β2\beta_2β2​、年単位の減衰の長さ λ\lambdaλ を持ち、4つの数で曲線全体を表します。当てはめ後のノイズの大きさは、nnn 個の点と ppp 個のパラメータで s=SSE/(n−p)s=\sqrt{\mathrm{SSE}/(n-p)}s=SSE/(n−p)​ と推定します。

δ=−(J⊤J)−1J⊤r,cost=12∑ri2,ρ(z)=2(1+z−1),s=SSEn−p\delta=-(J^{\top}J)^{-1}J^{\top}r,\qquad \text{cost}=\tfrac12\sum r_i^{2},\qquad \rho(z)=2(\sqrt{1+z}-1),\qquad s=\sqrt{\frac{\mathrm{SSE}}{n-p}}δ=−(J⊤J)−1J⊤r,cost=21​∑ri2​,ρ(z)=2(1+z​−1),s=n−pSSE​​(1)
原点を通る直線点 (1,2.1)(1,2.1)(1,2.1)、(2,3.9)(2,3.9)(2,3.9)、(3,6.2)(3,6.2)(3,6.2) に y=a xy=a\,xy=ax を当てはめます。a=1a=1a=1 から始めます。残差は r=ax−y=(−1.1,−1.9,−3.2)r=ax-y=(-1.1,-1.9,-3.2)r=ax−y=(−1.1,−1.9,−3.2)、ヤコビ行列は J=x=(1,2,3)J=x=(1,2,3)J=x=(1,2,3) です。J⊤r=−14.5J^{\top}r=-14.5J⊤r=−14.5、J⊤J=14J^{\top}J=14J⊤J=14 なので δ=14.5/14=1.036\delta=14.5/14=1.036δ=14.5/14=1.036、新しい値は a=2.036a=2.036a=2.036 です。モデルが aaa について線形なので、これがすでに答えです。答えでの残差は 0.0640.0640.064、−0.171-0.171−0.171、0.0930.0930.093 で、コストは 0.02110.02110.0211 です。残差 101010 は2乗なら 100100100 ですが、soft_l1 では ρ=18.10\rho=18.10ρ=18.10 にすぎません。実データでは、2026年10月9日の10本の米国債利回り(3か月〜30年)に least_squares で当てはめたネルソン・シーゲル曲線は、水準 5.75%5.75\%5.75%、傾き −1.52-1.52−1.52(満期とともに上昇)、λ=2.7\lambda=2.7λ=2.7 年で、気配利回りとのずれは平均 7.37.37.3 bp、最悪でも 131313 bp です。SSE=0.54\mathrm{SSE}=0.54SSE=0.54 で 101010 点に 444 個のパラメータを当てはめると、自由度は n−p=6n-p=6n−p=6、s=0.54/6=0.30s=\sqrt{0.54/6}=0.30s=0.54/6​=0.30 です。
  • 残差を入れ、パラメータを出す:fun(p) はモデル引くデータを返し、least_squares は2乗和を小さくする。
  • 外れ値にはロバスト損失:soft_l1 は1つの異常な点が曲線全体を引っ張るのを防ぐ。
  • 曲線を4つの数で:ネルソン・シーゲルは利回り曲線を水準・傾き・こぶ・減衰の長さで要約する。

ラボ:採点される内容

  • 原点を通る傾き10点
  • ガウス・ニュートン法の1歩15点
  • ロバストな罰則15点
  • 当てはめ後のノイズの大きさ10点
  • least_squaresの引数10点
  • 曲線当てはめの手順10点
  • なぜロバスト損失か30点
0/ 7問回答済み
問題
1数値で答える10点未回答

y=a xy=a\,xy=ax では最良の aaa は ∑xiyi/∑xi2\sum x_iy_i/\sum x_i^{2}∑xi​yi​/∑xi2​ です。x=(1,2,3)x=(1,2,3)x=(1,2,3)、y=(2.1,3.9,6.2)y=(2.1,3.9,6.2)y=(2.1,3.9,6.2) のとき aaa はいくつですか。小数第3位まで答えてください。

a=a =a=許容:± 0.003
2数値で答える15点未回答

a=1a=1a=1 から始めます。残差は r=(−1.1,−1.9,−3.2)r=(-1.1,-1.9,-3.2)r=(−1.1,−1.9,−3.2)、J=(1,2,3)J=(1,2,3)J=(1,2,3) で、J⊤r=−14.5J^{\top}r=-14.5J⊤r=−14.5、J⊤J=14J^{\top}J=14J⊤J=14 です。ステップ δ=−J⊤r/J⊤J\delta=-J^{\top}r/J^{\top}Jδ=−J⊤r/J⊤J はいくつですか。小数第3位まで答えてください。

d=d =d=許容:± 0.003
3数値で答える15点未回答

残差 101010 の2乗は z=100z=100z=100 です。soft_l1、f_scale=1 のとき罰則は ρ(z)=2(1+z−1)\rho(z)=2(\sqrt{1+z}-1)ρ(z)=2(1+z​−1) です。ρ\rhoρ はいくつですか。小数第2位まで答えてください。

rho=rho =rho=許容:± 0.05
4数値で答える10点未回答

p=4p=4p=4 個のパラメータの曲線を n=10n=10n=10 個の点に当てはめ、残差の2乗和は SSE=0.54\mathrm{SSE}=0.54SSE=0.54 でした。s=SSE/(n−p)s=\sqrt{\mathrm{SSE}/(n-p)}s=SSE/(n−p)​ はいくつですか。小数第2位まで答えてください。

s=s =s=許容:± 0.005
5対応づけ10点未回答

各引数を、その働きに結び付けてください。

左の各項目に対応するものを選んでください。

fun
x0
bounds
loss
6手順を並べ替える10点未回答

利回り曲線を当てはめる手順を並べ替えてください。

ドラッグして並べ替えます。または項目にフォーカスし、スペースで持ち上げ、矢印キーで移動、スペースで置きます。

  1. 1残差と成功フラグを確認する
  2. 2出発点と境界を付けて least_squares を呼ぶ
  3. 3モデルを選ぶ(ここではネルソン・シーゲル)
  4. 4モデル引くデータを返す関数を書く
7言葉で説明する30点未回答

1つの誤った気配が、他の9つの利回りから大きく離れています。通常の最小二乗の当てはめがそれに引っ張られる理由と、soft_l1 が役立つ理由を1〜2文で説明してください。

数学モードキーボードまたは LaTeX で入力問題1/7 · Ctrl ⏎ で確認

コードを実行するにはログインしてください。

レクチャーはすべて無料で読めます。コードの実行、テスト、ラボの提出にはアカウントの作成かログインが必要です。

  • ブラウザ内IDEとbashターミナル。インストール不要
  • 即時採点、XP、スキルでの現在地
アカウントを作成ログイン
または
GitHubで続ける