メインコンテンツへスキップ
見出し画像

書記が数学やるだけ#462 単回帰分析の計算-2

    前回の続きで,係数の区間推定,各データの残差,回帰直線などを扱う。


    問題

    スクリーンショット 2022-07-12 19.41.16


    解答

    まずは係数の分布を求める。

    数学やるだけ解答#462_page-0001


    ここで,ハット行列の対角要素からテコ比が出てくる。

    数学やるだけ解答#462_page-0002


    残差の分布について。

    数学やるだけ解答#462_page-0003


    係数の仮説検定,区間推定について。

    数学やるだけ解答#462_page-0004


    標準化残差,回帰式の区間推定について。

    数学やるだけ解答#462_page-0006


    実際の計算について,前回の続きから。

    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

    スクリーンショット 2022-07-12 19.49.05


    残差をプロットしてみる。

    #残差プロット
    data.plot.scatter(x='HEIGHT', y="e'")

    画像8


    標準化残差とテコ比をプロット。0から離れているほど外れ値である。

    #標準化残差とテコ比
    data.plot.scatter(x="e'", y="h")

    画像9


    次いで,回帰直線の信頼区間の図示。

    #信頼区間
    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')

    画像10


    これと別に,予測区間を図示してみる。

    #予測区間
    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')

    画像11


    本記事のもくじはこちら:


    あなたへのおすすめ