
書記が数学やるだけ#462 単回帰分析の計算-2
前回の続きで,係数の区間推定,各データの残差,回帰直線などを扱う。
問題
解答
まずは係数の分布を求める。
ここで,ハット行列の対角要素からテコ比が出てくる。
残差の分布について。
係数の仮説検定,区間推定について。
標準化残差,回帰式の区間推定について。
実際の計算について,前回の続きから。
t値を求めるところだけscipyを用いる(元の関数がかなり複雑なため)。
#係数の区間推定
phi_e=n-2
V_e=S_e/phi_e
from scipy.stats import t
t = t.ppf(0.975, phi_e)
CI_pm=t*np.sqrt(V_e/s_xx)
CI=[beta1-CI_pm, beta1+CI_pm]
CI[0.758248950041884, 2.3284505573473075]
元の表に予測値,残差,標準化残差,テコ比を加える。
#予測値,残差,標準化残差,テコ比
x=data.HEIGHT
y=data.VOLUME
data["y_hat"]=beta0+beta1*x
data["e"]=y-data["y_hat"]
data["e'"]=data["e"]/np.sqrt(V_e)
data["h"]=1/n + ((x-x_bar)**2)/s_xx
data残差をプロットしてみる。
#残差プロット
data.plot.scatter(x='HEIGHT', y="e'")標準化残差とテコ比をプロット。0から離れているほど外れ値である。
#標準化残差とテコ比
data.plot.scatter(x="e'", y="h")次いで,回帰直線の信頼区間の図示。
#信頼区間
x0=np.arange(60,91,0.1)
y0=beta0+beta1*x0
y_CI_pm=t*np.sqrt((1/n + (((x0-x_bar)**2)/s_xx)) *V_e)
y_CI_m=y0-y_CI_pm
y_CI_p=y0+y_CI_pm
plt.scatter(x0, y0, s=1, color='tomato')
plt.scatter(x0, y_CI_m, s=1, color='orange')
plt.scatter(x0, y_CI_p, s=1, color='orange')これと別に,予測区間を図示してみる。
#予測区間
y_PI_pm=t*np.sqrt((1 + 1/n + (((x0-x_bar)**2)/s_xx)) *V_e)
y_PI_m=y0-y_PI_pm
y_PI_p=y0+y_PI_pm
plt.scatter(x0, y0, s=1, color='tomato')
plt.scatter(x0, y_PI_m, s=1, color='orange')
plt.scatter(x0, y_PI_p, s=1, color='orange')本記事のもくじはこちら:










