擬合線性迴歸

使用 Python 中的 statsmodels 進行回歸入門

Maarten Van den Broeck

Content Developer at DataCamp

直線由兩件事決定

截距

當 $x$ 為 0 時的 $y$ 值。

斜率

$x$ 每增加 1,$y$ 增加的量。

方程式

$y = \text{intercept} + \text{slope} * x$

使用 Python 中的 statsmodels 進行回歸入門

估計截距

總付款對理賠次數的散佈圖與線性趨勢線。理賠次數增加時,付款近似線性上升。

使用 Python 中的 statsmodels 進行回歸入門

估計截距

總付款對理賠次數的散佈圖,標示趨勢線與 y 軸的交點。

使用 Python 中的 statsmodels 進行回歸入門

估計截距

總付款對理賠次數的散佈圖,標示理賠次數為 0 時的數值。

使用 Python 中的 statsmodels 進行回歸入門

估計斜率

總付款對理賠次數的散佈圖,標示趨勢線上的兩個點。一個在 1,500 克朗與 40 次理賠;另一個在 3,500 克朗與 100 次理賠。

使用 Python 中的 statsmodels 進行回歸入門

估計斜率

總付款對理賠次數的散佈圖,標示兩點間的付款差異。3,500 克朗減 1,500 克朗為 2,000 克朗。

使用 Python 中的 statsmodels 進行回歸入門

估計斜率

總付款對理賠次數的散佈圖,標示兩點間的理賠次數差異。100 次減 40 次為 60 次。

使用 Python 中的 statsmodels 進行回歸入門

估計斜率

總付款對理賠次數的散佈圖,標示差值比率:付款差 2,000 除以理賠差 60,約為 33。

使用 Python 中的 statsmodels 進行回歸入門

執行模型

from statsmodels.formula.api import ols

mdl_payment_vs_claims = ols("total_payment_sek ~ n_claims", data=swedish_motor_insurance)
mdl_payment_vs_claims = mdl_payment_vs_claims.fit()
print(mdl_payment_vs_claims.params)
Intercept    19.994486
n_claims      3.413824
dtype: float64
使用 Python 中的 statsmodels 進行回歸入門

解讀模型係數

Intercept    19.994486
n_claims      3.413824
dtype: float64

方程式

$\text{total\_payment\_sek} = 19.99 + 3.41 * \text{n\_claims}$

使用 Python 中的 statsmodels 進行回歸入門

一起來練習吧!

使用 Python 中的 statsmodels 進行回歸入門

Preparing Video For Download...