變量之間的非確定性相關關系。一般形式:y = f(x0,x1,x2,…xp)+ε若為線性回歸,y = β0+β1x1+β2x2+…+βnxn+εβ0,β1等為回歸係數,ε為隨機誤差。模型假設①零均值,ε均值為0②同方差,ε項方差為常數③無自相關性,ε項值之間無自相關性④正態分布,ε項呈正態分布。⑤x1,x2等解釋變量之間是非隨機變量,其觀測值是常數。⑥解釋變量之間不存在精確線性關系。⑦樣本個數多於解釋變量個數。建立回歸分析模型的一般步驟①需求分析明確變量②數據收集加工,檢查是否滿足回歸分析斷的假設。③確定回歸模型:一元,二元,多元;線性,非線性。畫散點圖。④確定模型參數:常用最小二乘法,若不符合假設條件,可用其它方法。最小二乘法也叫最小化平方法,通過使誤差的平方和最小來尋找最佳函數匹配。⑤模型檢驗優化⑥模型部署應用。優點:模型簡單,應用方便;有堅實的理論支撐;定量分析各變量間關系;模型預測結果可通過誤差分析精確了解。缺點:假設條件比較多且嚴格;變量選擇對模型影響較大。回歸模型的參數估計一元線性回歸模型:研究與現象關系最大的主要因素,兩者有密切關係,但並非確定性關系,可用該模型。y = β0+β1x+εy為被解釋變量或因變量,x為解釋變量或自變量。β0回歸常數,β1回歸係數,二者統稱為回歸參數。ε為隨機誤差。其中E(ε) = 0,var(ε) = 常數。一元線性回歸方程:y = β0+β1x 忽略隨機誤差。回歸方程從平均意義上表達了變量y與x的統計規律性。回歸分析的主要任務是通過n組樣本的觀察值,對β0,β1進行估計,得到最終方程。參數估計:最小二乘估計(OLE)通過最小二乘法求出對β0,β1的估計值。離差平方和Q(β0,β1)=Σ(yi - E(yi))²=Σ(yi -β0+β1xi)²估計值滿足使上式離差平方和最小。其最小值的求法為求其偏導數,並令其為0。求解方程組即可。實操一下。先創建數據,畫散點圖。
x = [3.4, 1.8, 4.6, 2.3, 3.1, 5.5, 0.7, 3, 2.6, 4.3, 2.1, 1.1, 6.1, 4.8, 3.8] y = [26.2, 17.8, 31.3, 23.1, 27.5, 36, 14.1, 22.3, 19.6, 31.3, 24, 17.3, 43.2, 36.4, 26.1] x = np.array(x) y = np.array(y) print(len(x), len(y)) plt.scatter(x, y) plt.savefig("scatter.png")
建立線性回歸模型
df pd.DataFrame() df["X"] = x df["Y"] = y print(df) regr = linear_model.LinearRegression() # 擬合 regr.fit(x.reshape(-1,1), y) # 得到回歸參數的二乘法估計 a, b = regr.coef_, regr.intercept_ print(a, b) # 畫出擬合的直線 yp = a*x + b plt.scatter(x, y) plt.plot(x, yp) plt.savefig("fit.png")
擬合結果a = 4.91933073 b = 10.277928549524688
另一種參數估計方法:最大似然估計(MLE)利用總體的分布密度或概率分布的表達式及其樣本所提供的信息求未知參數估計量的一種方法。基本思路:已知樣本符合某種分布,但分布參數未知,通過實驗來估計分布參數。估算思路:如果某組參數能使當前樣本出現的概率最大,就認為該參數為最終的估計值。解決的是模型已定,參數未知的問題,用已知樣本去估算未知參數。出現當前情形的概率為f(x1x2x3…xn|θ)=f(x1|θ)f(x2|θ)f(x3|θ)…f(xn|θ),其中θ未知。似然函數L(θ|x1x2x3…xn) = f(x1x2x3…xn|θ)=f(x1|θ)f(x2|θ)f(x3|θ)…f(xn|θ)=Πf(xi|θ)前提是事件x之間是獨立的。取對數lnL(θ|x1x2x3…xn) = lnf(x1|θ)+lnf(x2|θ)+lnf(x3|θ)+…+lnf(xn|θ) = Σf(xi|θ)平均對數似然l = lnL(θ|x1x2x3…xn)/n最大似然估計就是找到一個θ使得l最大。求導求出最大值。一元線性回歸,OLE和MLE是等價的,MLE還可以估計方差σ²的值。無偏估計,估計不同樣本,偏差平均值為0。反之則為有偏估計。一元線性回歸方差的性質:①線性:估計回歸參數為隨機變量yi的線性函數。②無偏,估計值y為真實值的無偏估計,即E(y) = E(y)③參數的方差,與樣本方差,隨機誤差的方差等有關系。模型的檢驗①回歸係數是否顯著:t檢驗檢驗因變量y與自變量x之間是否真的存在線性關系?即β1=0?用t檢驗進行判斷。確定假設:目的是找到不達標的證據。原假設H0:β0=0,備擇假設H1:β0≠0檢驗水平:α=0.05或0.01構造統計量:H0成立時,β1滿足正態分布。計算p值。得出結論。②回歸方程是否顯著:F檢驗。根據平方和分解式,直接從回歸效果檢驗回歸方程的顯著性。③相關係數顯著性檢驗:t檢驗。樣本相關係數可以作為總體相關係數的估計值,樣本相關係數不等於零時需要進行假設檢驗確定是來自抽樣誤差還是來自整體。④決定係數SST = SSR + SSE, SSR佔的比重越大,線性回歸效果越好。r² = SSR/SST用模型的score函數來給模型評分,結果為0.9234781689805285。還可以用statsmodels庫來做,回歸結果類似,與sklearn庫不同的是它可以輸出檢驗結果。用statsmodels來做
import statsmodels.api as sm X = sm.add_constant(x) model = sm.OLS(y, X) result = model.fit() print("statsmodels做線性回歸") print(result.params)
變量之間的非確定性相關關系。
一般形式:y = f(x0,x1,x2,…xp)+ε
若為線性回歸,y = β0+β1x1+β2x2+…+βnxn+ε
β0,β1等為回歸係數,ε為隨機誤差。
模型假設
①零均值,ε均值為0
②同方差,ε項方差為常數
③無自相關性,ε項值之間無自相關性
④正態分布,ε項呈正態分布。
⑤x1,x2等解釋變量之間是非隨機變量,其觀測值是常數。
⑥解釋變量之間不存在精確線性關系。
⑦樣本個數多於解釋變量個數。
建立回歸分析模型的一般步驟
①需求分析明確變量
②數據收集加工,檢查是否滿足回歸分析斷的假設。
③確定回歸模型:一元,二元,多元;線性,非線性。畫散點圖。
④確定模型參數:常用最小二乘法,若不符合假設條件,可用其它方法。
最小二乘法也叫最小化平方法,通過使誤差的平方和最小來尋找最佳函數匹配。
⑤模型檢驗優化
⑥模型部署應用。
優點:模型簡單,應用方便;有堅實的理論支撐;定量分析各變量間關系;模型預測結果可通過誤差分析精確了解。
缺點:假設條件比較多且嚴格;變量選擇對模型影響較大。
回歸模型的參數估計
一元線性回歸模型:研究與現象關系最大的主要因素,兩者有密切關係,但並非確定性關系,可用該模型。
y = β0+β1x+ε
y為被解釋變量或因變量,x為解釋變量或自變量。β0回歸常數,β1回歸係數,二者統稱為回歸參數。ε為隨機誤差。其中E(ε) = 0,var(ε) = 常數。
一元線性回歸方程:y = β0+β1x 忽略隨機誤差。
回歸方程從平均意義上表達了變量y與x的統計規律性。
回歸分析的主要任務是通過n組樣本的觀察值,對β0,β1進行估計,得到最終方程。
參數估計:最小二乘估計(OLE)
通過最小二乘法求出對β0,β1的估計值。
離差平方和Q(β0,β1)=Σ(yi - E(yi))²=Σ(yi -β0+β1xi)²
估計值滿足使上式離差平方和最小。
其最小值的求法為求其偏導數,並令其為0。求解方程組即可。
實操一下。
先創建數據,畫散點圖。
x = [3.4, 1.8, 4.6, 2.3, 3.1, 5.5, 0.7, 3, 2.6, 4.3, 2.1, 1.1, 6.1, 4.8, 3.8] y = [26.2, 17.8, 31.3, 23.1, 27.5, 36, 14.1, 22.3, 19.6, 31.3, 24, 17.3, 43.2, 36.4, 26.1] x = np.array(x) y = np.array(y) print(len(x), len(y)) plt.scatter(x, y) plt.savefig("scatter.png")
建立線性回歸模型
df pd.DataFrame() df["X"] = x df["Y"] = y print(df) regr = linear_model.LinearRegression() # 擬合 regr.fit(x.reshape(-1,1), y) # 得到回歸參數的二乘法估計 a, b = regr.coef_, regr.intercept_ print(a, b) # 畫出擬合的直線 yp = a*x + b plt.scatter(x, y) plt.plot(x, yp) plt.savefig("fit.png")
擬合結果
a = 4.91933073 b = 10.277928549524688
另一種參數估計方法:最大似然估計(MLE)
利用總體的分布密度或概率分布的表達式及其樣本所提供的信息求未知參數估計量的一種方法。
基本思路:已知樣本符合某種分布,但分布參數未知,通過實驗來估計分布參數。估算思路:如果某組參數能使當前樣本出現的概率最大,就認為該參數為最終的估計值。解決的是模型已定,參數未知的問題,用已知樣本去估算未知參數。
出現當前情形的概率為f(x1x2x3…xn|θ)=f(x1|θ)f(x2|θ)f(x3|θ)…f(xn|θ),其中θ未知。
似然函數L(θ|x1x2x3…xn) = f(x1x2x3…xn|θ)=f(x1|θ)f(x2|θ)f(x3|θ)…f(xn|θ)=Πf(xi|θ)
前提是事件x之間是獨立的。
取對數lnL(θ|x1x2x3…xn) = lnf(x1|θ)+lnf(x2|θ)+lnf(x3|θ)+…+lnf(xn|θ) = Σf(xi|θ)
平均對數似然l = lnL(θ|x1x2x3…xn)/n
最大似然估計就是找到一個θ使得l最大。求導求出最大值。
一元線性回歸,OLE和MLE是等價的,MLE還可以估計方差σ²的值。
無偏估計,估計不同樣本,偏差平均值為0。反之則為有偏估計。
一元線性回歸方差的性質:
①線性:估計回歸參數為隨機變量yi的線性函數。
②無偏,估計值y為真實值的無偏估計,即E(y) = E(y)
③參數的方差,與樣本方差,隨機誤差的方差等有關系。
模型的檢驗
①回歸係數是否顯著:t檢驗
檢驗因變量y與自變量x之間是否真的存在線性關系?即β1=0?用t檢驗進行判斷。
確定假設:目的是找到不達標的證據。原假設H0:β0=0,備擇假設H1:β0≠0
檢驗水平:α=0.05或0.01
構造統計量:H0成立時,β1滿足正態分布。
計算p值。
得出結論。
②回歸方程是否顯著:F檢驗。
根據平方和分解式,直接從回歸效果檢驗回歸方程的顯著性。
③相關係數顯著性檢驗:t檢驗。
樣本相關係數可以作為總體相關係數的估計值,樣本相關係數不等於零時需要進行假設檢驗確定是來自抽樣誤差還是來自整體。
④決定係數
SST = SSR + SSE, SSR佔的比重越大,線性回歸效果越好。
r² = SSR/SST
用模型的score函數來給模型評分,結果為0.9234781689805285。
還可以用statsmodels庫來做,回歸結果類似,與sklearn庫不同的是它可以輸出檢驗結果。
用statsmodels來做
import statsmodels.api as sm X = sm.add_constant(x) model = sm.OLS(y, X) result = model.fit() print("statsmodels做線性回歸") print(result.params)