關注
成都創(chuàng)新互聯(lián)公司專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、新城網(wǎng)站定制設計、自適應品牌網(wǎng)站建設、H5場景定制、商城網(wǎng)站建設、集團公司官網(wǎng)建設、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應式網(wǎng)頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為新城等各大城市提供網(wǎng)站開發(fā)制作服務。
當影響因變量的因素是多個時候,這種一個變量同時與多個變量的回歸問題就是多元回歸,分為:多元線性回歸和多元非線性回歸。這里直說多元線性回歸。對比一元線性回歸:
1.1多元回歸模型:
y=β0+β1x1+β2x2+…+βkxk+ε
y=β0+β1x1+β2x2+…+βkxk+ε
1.2多元回歸方程
E(y)=β0+β1x1+β2x2+…+βkxk
E(y)=β0+β1x1+β2x2+…+βkxk
1.3估計的多元回歸方程
y^=β0^+β1^x1+β2^x2+…+βk^xk
y^=β0^+β1^x1+β2^x2+…+βk^xk
2.1**對參數(shù)的最小二乘法估計:**
和一元線性回歸中提到的最小二乘法估計一樣、這不過這里的求導變量多了點、原理是一樣的、這里需要借助計算機求導、就不寫了。
3 回歸方程的擬合優(yōu)度:
3.1 多重判定系數(shù):(Multiple coefficient of determination)
R2=SSRSST=1?SSESST
R2=SSRSST=1?SSESST
注解:
(1 ) 對于多重判定系數(shù)有一點特別重要的需要說明:自變量個數(shù)的增加將影響到因變量中被估計的回歸方程所解釋的變量數(shù)量。當增加自變量時,會使預測誤差變得較小,從而減小殘差平方和 SSESSE。自然就會是 SSRSSR變大。自然就會是 R2R2變大。這就會引發(fā)一個問題。如果模型中增加一個自變量,即使這個自變量在統(tǒng)計上并不顯著, R2R2的值也會變大。因此為了避免這個問題。提出了 調(diào)整的多種判定系數(shù)(adjusted multiple coefficient of determination):
R2a=1?(1?R2)(n?1n?k?1)
Ra2=1?(1?R2)(n?1n?k?1)
R2aRa2 同時考慮了樣本量 (n)(n) 和模型中自變量的個數(shù) (k)(k) 的影響,這就使得 R2aRa2 的值永遠小于 R2R2,而且 R2aRa2 的值不會因為模型中自變量的個數(shù)增多而逐漸接近于 11.
(2 ) R2R2 的平方根成為多重相關系數(shù),也稱為復相關系數(shù), 它度量了因變量同 kk 個自變量的相關程度。
3.2 估計標準誤差
同一元線性回歸一樣,多元回歸中的估計標準誤差也是誤差項 εε 的方差 σ2σ2 的一個估計值,
se=SSEn?k?1????????√=MSE?????√
se=SSEn?k?1=MSE
4. 顯著性檢驗
在此重點說明,在一元線性回歸中,線性關系的檢驗 (F檢驗)(F檢驗) 和回歸系數(shù)的檢驗 (t檢驗)(t檢驗) 是等價的。 但是在多元回歸中,線性關系的檢驗主要是檢驗因變量同多個自變量線性關系是否顯著,在 kk 個自變量中,只要有一個自變量與因變量的線性關系顯著, F檢驗F檢驗 就能通過,但這不一定意味著每個自變量與因變量的關系都顯著?;貧w系數(shù)檢驗則是對每個回歸系數(shù)分別進行單獨的檢驗,它主要用于檢驗每個自變量對因變量的影響是否都顯著。如果某個自變量沒有通過檢驗,就意味著這個自變量對因變量的影響不顯著,也許就沒有必要將這個自變量放進回歸模型中。
4.1 線性關系的檢驗
步驟:
(1):提出假設
H0:β1=β2=…=βk=0
H0:β1=β2=…=βk=0
H1:β1,β2,…=βk至少有一個不等于0
H1:β1,β2,…=βk至少有一個不等于0
(2):計算檢驗的統(tǒng)計量F.
F=SSR/kSSE/(n?k?1)≈F(k,n?k?1)
F=SSR/kSSE/(n?k?1)≈F(k,n?k?1)
(3):作出統(tǒng)計決策。
4.2 線性關系的檢驗
步驟:
(1):提出假設
H0:βi=0
H0:βi=0
H1:βi≠0
H1:βi≠0
(2):計算檢驗的統(tǒng)計量F.
ti=βi^sβi^≈t(n?k?1)
ti=βi^sβi^≈t(n?k?1)
(3):作出統(tǒng)計決策。
5.1 多重共線性
多重共線性:當回歸模型中兩個或兩個以上的變量彼此相關時,則稱回歸模型中存在多重共線性。
多重共線性的判別:
(1)模型中中各對自變量之間顯著相關
(2)當模型的線性關系檢驗 (F檢驗)(F檢驗) 顯著時,幾乎所有的回歸系數(shù) βiβi 的 tt 檢驗卻不顯著。
(3)回歸系數(shù)的正負號與預期的相反。
(4)容忍度(tolerance) 與 方差擴大因子(variance inflation factor, VIF).
容忍度:某個變量的容忍度等于 1 減去該自變量為因變量而其他 k?1k?1 個自變量為預測變量時所得到的線性回歸模型的判定系數(shù)。即 1?R2i1?Ri2。 容忍度越小,多重共線性越嚴重。通常認為 容忍度小于 0.1 時,存在嚴重的多重共線性。
方差擴大因子:容忍度的倒數(shù)。 因此,VIFVIF 越大,多重共線性越嚴重,一般認為 VIFVIF 的值大于10時,存在嚴重的多重共線性。
5.2 多重共線性的處理
常見的兩種辦法:
(1)將一個或多個相關的自變量從模型中剔除,使保留的自變量盡可能不相關。
(2)如果要在模型中保留所有的自變量,那么應該:
(2.1)避免根據(jù) tt統(tǒng)計量對單個參數(shù) ββ 進行檢驗,
(2.2)對因變量 yy 值的推斷(預測和估計)限定在自變量樣本值的范圍內(nèi)。
5.3選擇變量避免共線性的幾種方式,
在建立回歸模型時,我們總是希望用最少的變量來說明問題,選擇自變量的原則通常是對統(tǒng)計量進行顯著性檢驗,檢驗的根據(jù)是:將一個或一個以上的自變量引入回歸模型中時,是否使殘差平方和 (SSE)(SSE) 顯著減少,如果增加一個自變量使殘差平方和 (SSE)(SSE) 顯著減少,則說明有必要將這個變量引入回歸模型中,否則,沒有必要將這個變量引入回歸模型中。確定在模型中引入自變量 xixi 是否使殘差平方和 (SSE)(SSE) 顯著減少的方法,就是使用 FF 統(tǒng)計量的值作為一個標準,以此來確定在模型中增加一個自變量,還是從模型中剔除一個自變量。
變量選擇方式:
5.3.1 向前選擇;
第一步: 對 kk 個自變量分別與因變量 yy 的一元線性回歸模型,共有 kk 個,然后找到 FF 統(tǒng)計量的值最大的模型及其自變量 xixi 并將其首先引入模型。
第二步: 在已經(jīng)引入模型的 xixi 的基礎上,再分別擬合 xixi 與模型外的 k?1k?1 個自變量的線性回歸模型,挑選出 FF 值最大的含有兩個自變量的模型, 依次循環(huán)、直到增加自變量不能導致 SSESSE 顯著增加為止,
5.3.2向后剔除
第一步:先對所有的自變量進行線性回歸模型。然后考察 pkpk 個去掉一個自變量的模型,使模型的SSE值減小最少的自變量被挑選出來從模型中剔除,
第二步:考察 p?1p?1 個再去掉一個自變量的模型,使模型的SSE值減小最少的自變量被挑選出來從模型中剔除,直到剔除一個自變量不會使SSE值顯著減小為止,這時,模型中的所剩自變量自然都是顯著的。
5.3.3逐步回歸
是上面兩個的結合、考慮的比較全,以后就用這個就可以。
具體的分析過程、咱們以spss的多元回歸分析結果為例。
文章知識點與官方知識檔案匹配
算法技能樹首頁概覽
31292 人正在系統(tǒng)學習中
點擊閱讀全文
打開CSDN,閱讀體驗更佳
線性回歸與非線性回歸em分析/em簡明教程(python版)-全程干貨無廢話
p 本課程主要講述如何使用python進行線性回歸與非線性回歸分析,包括: /p p br / /p ul li 基于statsmodel的線性回歸方法 /li li 基于sklearn的線性回歸方法 /li li 基于Numpy的一元多項式非線性回歸方法 /li li 基于sklearn的多元多項式非線性回歸方法 /li li 基于scipy的通用曲線擬合非線性回歸方法 /li /ul
繼續(xù)訪問
最新發(fā)布 判別分析在SPSS上的實現(xiàn)與結果分析——基于SPSS實驗報告
已知分組類別,判斷樣本的類別
繼續(xù)訪問
多元回歸分析(實例,講解,詳實).doc
非常好的多元回歸分析資料。 多元回歸分析原理 回歸分析是一種處理變量的統(tǒng)計相關關系的一種數(shù)理統(tǒng)計方法?;貧w分析的基本思想是: 雖然自變量和因變量之間沒有嚴格的、確定性的函數(shù)關系, 但可以設法找出最能代表它們之間關系的數(shù)學表達形式。
SPSS多元回歸分析實例
用SPSS 在大多數(shù)的實際問題中,影響因變量的因素不是一個而是多個,我們稱這類回問題為多元回歸分析??梢越⒁蜃兞縴與各自變量xj(j=1,2,3,…,n)之間的多元線性回歸模型
SPSS的線性回歸分析
使用SPSS軟件進行線性回歸分析,包括回歸分析概述 線性回歸分析 回歸方程的統(tǒng)計檢驗 多元回歸分析中的其他問題 線性回歸分析的基本操作 線性回歸分析的應用舉例 曲線估計
spss進行多元線性回歸并分析表格
本博客主要包含以下內(nèi)容: 1.如何使用spss進行多元線性回歸。 2.分析生成結果,并判斷回歸是否可行。 一、使用spss進行多元線性回歸: 1.輸入數(shù)據(jù) 2. 3. 4. 5. 6. 二、表格結果分析: R方是檢驗回歸是否成功的重要要素之一,DW是殘差獨立性檢驗,衡量標準如下: 再看下一個表格: F的值是F檢驗的結果,他對應的P就是表格...
繼續(xù)訪問
《統(tǒng)計學》筆記:第12章 多元線性回歸
《統(tǒng)計學(第六版)》賈俊平 第12章 多元線性回歸 多元回歸模型 multiple regression model 設因變量為y,k個自變量分別為x1,x2,…,xk,描述因變量y如何依賴于自變量x1,x2,…,xk和誤差項ε的方程稱為多元回歸模型。其一般形式可表示為: y=β0+β1x1+β2x2+...+βkxk+? y=\beta_0+\beta_1x_1+\beta_2x_2+...+\beta_kx_k+\epsilon y=β0+β1x1+β2x2+...+βkxk+? 式中,β
繼續(xù)訪問
多元線性回歸分析spss結果解讀_Spss的線性回歸做法及結果解讀
上一節(jié)我們講過了eviews做多元回歸,但是很多同學做問卷之類的都需要用到spss,所以這節(jié)我教一下大家如何用spss做多元回歸,并對結果進行解讀,再對大家所疑惑的顯著水平做一些白話的解釋。一.線性回歸的操作將因變量和自變量移入對應的框中,方法選擇進入就好了。方法這里我們最多用的就是進入和逐步。二.回歸模型的結果解讀模型匯總模型RR 方調(diào)整 R 方標準 估計的誤差1.905a.818.8...
繼續(xù)訪問
多重共線性詳解
目錄 1、多重共線性的現(xiàn)象 2、出現(xiàn)的原因 3、判別標準 4、檢驗方法 5、多重共線性有什么影響 6、多重共線性處理方法 7、其他說明 8、多重共線性識別-python代碼8.1、vif檢驗8.2 相關系數(shù)8.3 聚類 9、宏觀把握共線性問題9.1、共線性的一般性的影響9.2、共線性對線性回歸、邏輯回歸的影響 10、statsmodel庫DF Residuals:殘差的自由度Df Model:模型參數(shù)個數(shù)(不包含常量參數(shù))R-squared:可決系數(shù)adj-R-squared:修正可決系數(shù) 1、多重共線性
繼續(xù)訪問
r語言多元線性回歸_第三十一講 R多元線性回歸中的多重共線性和方差膨脹因子...
在前兩講中,我們介紹了多元線性回歸的概念以及多元線性回歸中的交互作用。今天學習的主要內(nèi)容是多元線性回歸中的多重共線性和方差膨脹因子。1. 共線性的概念1共線性在多元回歸中,兩個或多個預測變量可能彼此相關,這種情況稱為共線性(multicollinearity)。2多重共線性存在一種稱為多重共線性的極端情況,其中三個或更多變量之間存在共線性,即使沒有一對變量具有特別高的相關性。這意味著預測...
繼續(xù)訪問
Multiple Linear Regressions 多元線性回歸 (R)
多元回歸 多元回歸是線性回歸模型的自然延伸。它用于從幾個解釋變量預測響應的值。每個解釋變量都有自己的系數(shù)。響應變量由所有變量乘以各自系數(shù)的組合來預測。 其基本原理與簡單回歸相同:我們尋求預測因子的線性組合,以最小化與結果變量的差異。 the parallel slopes model 平行斜率模型 數(shù)據(jù)展示 當我們遇到兩個 變量的場景,其中一個是 數(shù)字型變量(溫度),其中一個是 分類型變量(是否是周末),我們定義了下面這樣的模型: X1 是“溫度”,X2是 “是否是周末” ..
繼續(xù)訪問
多元線性回歸分析spss結果解讀_SPSS 多元線性回歸結果重要參數(shù)解讀
當自變量過多時,選擇步進,此方法可以自動剔除對因變量影響小的變量。選擇共線性診斷用于判斷多個變量之間是否相互關聯(lián)以及關聯(lián)的程度德賓-沃森(Durbin-Watson)DW用來檢驗回歸分析中的殘差項是否存在自相關(序列相關)現(xiàn)象“DEPENDNT”:因變量“ZPRED”:標準化預測值“ZRESID”:標準化殘差“DRESID”:刪除殘差“ADJPRED”:調(diào)節(jié)預測值“SRESID”:學生化殘差“SD...
繼續(xù)訪問
回歸方程的擬合優(yōu)度-多重判定系數(shù)-估計標準誤差
2019獨角獸企業(yè)重金招聘Python工程師標準 ...
繼續(xù)訪問
多元線性回歸原理
例子先行 一元線性:拿房價預測來說,房價就只與一個特征size(feet^2)有關: 多元線性: 房子除了面積,還會有其他的特征:number of bedrooms;number of floors; age of home....,為了引入這些特征,有了多元線性回歸,x1,x2,x3,x4為特征,y為預測的價格。 符號引入: n:特征的數(shù)量 ...
繼續(xù)訪問
SPSS軟件介紹
SPSS軟件界面描述 IBM SPSS是目前常用的一種統(tǒng)計分析軟件,SPSS(Statistical Product and Service Solutions)是統(tǒng)計產(chǎn)品和服務解決方案軟件,操作簡單,無需寫代碼,只需確定要分析的數(shù)據(jù)及之間的因變、自變關系,以及需要做單因素、多因素、混合等分析即可。 SPSS的基本功能包括數(shù)據(jù)管理、統(tǒng)計分析、圖表分析、輸出管理等等。SPSS統(tǒng)計分析過程包括描述性統(tǒng)計、均值比較、一般線性模型、相關分析、回歸分析、對數(shù)線性模型、聚類分析、數(shù)據(jù)簡化、生存分析、時間序列分析、多重響
繼續(xù)訪問
多重共線性一些指標解釋
ANOVA中 F檢驗是對整個模型而已的,看是不是自變量系數(shù)不全為0,這里F檢驗值23,對應P概率=0,顯著性P0.05,H1成立,說明顯著性非常高 系數(shù)中 t檢驗則是分別針對某個自變量的,看每個自變量是否有顯著預測效力。這里t檢驗對應概率大于0.05,即顯著性一列為0.23和0.48,說明顯著性很差 SPSS對于多重共線性的判斷指標有以下幾種:容忍度(Tolerance)、方差膨脹因子(V...
繼續(xù)訪問
第12章 多元線性回歸-整理2
12.2 回歸方程的擬合優(yōu)度 12.2.1 多重判定系數(shù) 多重判定系數(shù)(multiple coefficient of determination)是多元回歸中的回歸平方和占總平方和的比例,它是度量多元回歸方程擬合程度的一個統(tǒng)計量,反映了因變量y的變差中被估計的回歸方程所解釋的比例。 R2=SSRSST=1?SSESSTR^2=\frac{SSR}{SST}=1-\frac{SSE}{SST}R2=SSTSSR=1?SSTSSE調(diào)整的多重判定系數(shù): Ra2=1?(1?R2)(n?1n?k?1)R^2_
繼續(xù)訪問
熱門推薦 SPSS多元線性回歸輸出結果的詳細解釋
先說一句題外話,如果當年在大學里數(shù)理統(tǒng)計等課程結合SPSS,SAS,R等軟件來講,應該效果會好很多。 最近做了一些用SPSS進行線性回歸的實驗,還是感覺很多細節(jié)把握不好,這里結合我的實驗結果,以及網(wǎng)上別人的介紹總結一下,先貼幾張SPSS的輸出: 下面簡單解釋一下這三張圖中的結果: 第一個表模型匯總表中,R表示擬合優(yōu)度(goodness of fit),它是用來衡量估計的模型對觀測...
繼續(xù)訪問
多元回歸分析--學習筆記
回歸系數(shù)解釋:回多元回歸情形下,對每一個回歸系數(shù)的解釋如下,當所有其他自變量保持不變時,bi是因變量y對應于自變量xi改變一個單位時所做的改變的估計值。 多元判定系數(shù)(R-sq):計算方法同簡單線性回歸,乘以100即可解釋為:因變量y中的變異性能被估計多元線性回歸方程解釋的百分比 修正多元判定系數(shù):多元判定系數(shù)的值總是隨著新的自變量進入模型而增加,即使新增的變量在統(tǒng)計學上并不顯
SciPy 里面的子函數(shù)庫optimize, 一般情況下可用curve_fit函數(shù)直接擬合或者leastsq做最小二乘
1. 常用函數(shù)庫
? scipy包中的stats模塊和statsmodels包是python常用的數(shù)據(jù)分析工具,scipy.stats以前有一個models子模塊,后來被移除了。這個模塊被重寫并成為了現(xiàn)在獨立的statsmodels包。
?scipy的stats包含一些比較基本的工具,比如:t檢驗,正態(tài)性檢驗,卡方檢驗之類,statsmodels提供了更為系統(tǒng)的統(tǒng)計模型,包括線性模型,時序分析,還包含數(shù)據(jù)集,做圖工具等等。
2. 小樣本數(shù)據(jù)的正態(tài)性檢驗
(1) 用途
?夏皮羅維爾克檢驗法 (Shapiro-Wilk) 用于檢驗參數(shù)提供的一組小樣本數(shù)據(jù)線是否符合正態(tài)分布,統(tǒng)計量越大則表示數(shù)據(jù)越符合正態(tài)分布,但是在非正態(tài)分布的小樣本數(shù)據(jù)中也經(jīng)常會出現(xiàn)較大的W值。需要查表來估計其概率。由于原假設是其符合正態(tài)分布,所以當P值小于指定顯著水平時表示其不符合正態(tài)分布。
?正態(tài)性檢驗是數(shù)據(jù)分析的第一步,數(shù)據(jù)是否符合正態(tài)性決定了后續(xù)使用不同的分析和預測方法,當數(shù)據(jù)不符合正態(tài)性分布時,我們可以通過不同的轉換方法把非正太態(tài)數(shù)據(jù)轉換成正態(tài)分布后再使用相應的統(tǒng)計方法進行下一步操作。
(2) 示例
(3) 結果分析
?返回結果 p-value=0.029035290703177452,比指定的顯著水平(一般為5%)小,則拒絕假設:x不服從正態(tài)分布。
3. 檢驗樣本是否服務某一分布
(1) 用途
?科爾莫戈羅夫檢驗(Kolmogorov-Smirnov test),檢驗樣本數(shù)據(jù)是否服從某一分布,僅適用于連續(xù)分布的檢驗。下例中用它檢驗正態(tài)分布。
(2) 示例
(3) 結果分析
?生成300個服從N(0,1)標準正態(tài)分布的隨機數(shù),在使用k-s檢驗該數(shù)據(jù)是否服從正態(tài)分布,提出假設:x從正態(tài)分布。最終返回的結果,p-value=0.9260909172362317,比指定的顯著水平(一般為5%)大,則我們不能拒絕假設:x服從正態(tài)分布。這并不是說x服從正態(tài)分布一定是正確的,而是說沒有充分的證據(jù)證明x不服從正態(tài)分布。因此我們的假設被接受,認為x服從正態(tài)分布。如果p-value小于我們指定的顯著性水平,則我們可以肯定地拒絕提出的假設,認為x肯定不服從正態(tài)分布,這個拒絕是絕對正確的。
4.方差齊性檢驗
(1) 用途
?方差反映了一組數(shù)據(jù)與其平均值的偏離程度,方差齊性檢驗用以檢驗兩組或多組數(shù)據(jù)與其平均值偏離程度是否存在差異,也是很多檢驗和算法的先決條件。
(2) 示例
(3) 結果分析
?返回結果 p-value=0.19337536323599344, 比指定的顯著水平(假設為5%)大,認為兩組數(shù)據(jù)具有方差齊性。
5. 圖形描述相關性
(1) 用途
?最常用的兩變量相關性分析,是用作圖描述相關性,圖的橫軸是一個變量,縱軸是另一變量,畫散點圖,從圖中可以直觀地看到相關性的方向和強弱,線性正相關一般形成由左下到右上的圖形;負面相關則是從左上到右下的圖形,還有一些非線性相關也能從圖中觀察到。
(2) 示例
(3) 結果分析
?從圖中可以看到明顯的正相關趨勢。
6. 正態(tài)資料的相關分析
(1) 用途
?皮爾森相關系數(shù)(Pearson correlation coefficient)是反應兩變量之間線性相關程度的統(tǒng)計量,用它來分析正態(tài)分布的兩個連續(xù)型變量之間的相關性。常用于分析自變量之間,以及自變量和因變量之間的相關性。
(2) 示例
(3) 結果分析
?返回結果的第一個值為相關系數(shù)表示線性相關程度,其取值范圍在[-1,1],絕對值越接近1,說明兩個變量的相關性越強,絕對值越接近0說明兩個變量的相關性越差。當兩個變量完全不相關時相關系數(shù)為0。第二個值為p-value,統(tǒng)計學上,一般當p-value0.05時,可以認為兩變量存在相關性。
7. 非正態(tài)資料的相關分析
(1) 用途
?斯皮爾曼等級相關系數(shù)(Spearman’s correlation coefficient for ranked data ),它主要用于評價順序變量間的線性相關關系,在計算過程中,只考慮變量值的順序(rank, 值或稱等級),而不考慮變量值的大小。常用于計算類型變量的相關性。
(2) 示例
(3) 結果分析
?返回結果的第一個值為相關系數(shù)表示線性相關程度,本例中correlation趨近于1表示正相關。第二個值為p-value,p-value越小,表示相關程度越顯著。
8. 單樣本T檢驗
(1) 用途
?單樣本T檢驗,用于檢驗數(shù)據(jù)是否來自一致均值的總體,T檢驗主要是以均值為核心的檢驗。注意以下幾種T檢驗都是雙側T檢驗。
(2) 示例
(3) 結果分析
?本例中生成了2列100行的數(shù)組,ttest_1samp的第二個參數(shù)是分別對兩列估計的均值,p-value返回結果,第一列1.47820719e-06比指定的顯著水平(一般為5%)小,認為差異顯著,拒絕假設;第二列2.83088106e-01大于指定顯著水平,不能拒絕假設:服從正態(tài)分布。
9. 兩獨立樣本T檢驗
(1) 用途
?由于比較兩組數(shù)據(jù)是否來自于同一正態(tài)分布的總體。注意:如果要比較的兩組數(shù)據(jù)不滿足方差齊性, 需要在ttest_ind()函數(shù)中添加參數(shù)equal_var = False。
(2) 示例
(3) 結果分析
?返回結果的第一個值為統(tǒng)計量,第二個值為p-value,pvalue=0.19313343989106416,比指定的顯著水平(一般為5%)大,不能拒絕假設,兩組數(shù)據(jù)來自于同一總結,兩組數(shù)據(jù)之間無差異。
10. 配對樣本T檢驗
(1) 用途
?配對樣本T檢驗可視為單樣本T檢驗的擴展,檢驗的對象由一群來自正態(tài)分布獨立樣本更改為二群配對樣本觀測值之差。它常用于比較同一受試對象處理的前后差異,或者按照某一條件進行兩兩配對分別給與不同處理的受試對象之間是否存在差異。
(2) 示例
(3) 結果分析
?返回結果的第一個值為統(tǒng)計量,第二個值為p-value,pvalue=0.80964043445811551,比指定的顯著水平(一般為5%)大,不能拒絕假設。
11. 單因素方差分析
(1) 用途
?方差分析(Analysis of Variance,簡稱ANOVA),又稱F檢驗,用于兩個及兩個以上樣本均數(shù)差別的顯著性檢驗。方差分析主要是考慮各組之間的平均數(shù)差別。
?單因素方差分析(One-wayAnova),是檢驗由單一因素影響的多組樣本某因變量的均值是否有顯著差異。
?當因變量Y是數(shù)值型,自變量X是分類值,通常的做法是按X的類別把實例成分幾組,分析Y值在X的不同分組中是否存在差異。
(2) 示例
(3) 結果分析
?返回結果的第一個值為統(tǒng)計量,它由組間差異除以組間差異得到,上例中組間差異很大,第二個返回值p-value=6.2231520821576832e-19小于邊界值(一般為0.05),拒絕原假設, 即認為以上三組數(shù)據(jù)存在統(tǒng)計學差異,并不能判斷是哪兩組之間存在差異 。只有兩組數(shù)據(jù)時,效果同 stats.levene 一樣。
12. 多因素方差分析
(1) 用途
?當有兩個或者兩個以上自變量對因變量產(chǎn)生影響時,可以用多因素方差分析的方法來進行分析。它不僅要考慮每個因素的主效應,還要考慮因素之間的交互效應。
(2) 示例
(3) 結果分析
?上述程序定義了公式,公式中,"~"用于隔離因變量和自變量,”+“用于分隔各個自變量, ":"表示兩個自變量交互影響。從返回結果的P值可以看出,X1和X2的值組間差異不大,而組合后的T:G的組間有明顯差異。
13. 卡方檢驗
(1) 用途
?上面介紹的T檢驗是參數(shù)檢驗,卡方檢驗是一種非參數(shù)檢驗方法。相對來說,非參數(shù)檢驗對數(shù)據(jù)分布的要求比較寬松,并且也不要求太大數(shù)據(jù)量??ǚ綑z驗是一種對計數(shù)資料的假設檢驗方法,主要是比較理論頻數(shù)和實際頻數(shù)的吻合程度。常用于特征選擇,比如,檢驗男人和女人在是否患有高血壓上有無區(qū)別,如果有區(qū)別,則說明性別與是否患有高血壓有關,在后續(xù)分析時就需要把性別這個分類變量放入模型訓練。
?基本數(shù)據(jù)有R行C列, 故通稱RC列聯(lián)表(contingency table), 簡稱RC表,它是觀測數(shù)據(jù)按兩個或更多屬性(定性變量)分類時所列出的頻數(shù)表。
(2) 示例
(3) 結果分析
?卡方檢驗函數(shù)的參數(shù)是列聯(lián)表中的頻數(shù),返回結果第一個值為統(tǒng)計量值,第二個結果為p-value值,p-value=0.54543425102570975,比指定的顯著水平(一般5%)大,不能拒絕原假設,即相關性不顯著。第三個結果是自由度,第四個結果的數(shù)組是列聯(lián)表的期望值分布。
14. 單變量統(tǒng)計分析
(1) 用途
?單變量統(tǒng)計描述是數(shù)據(jù)分析中最簡單的形式,其中被分析的數(shù)據(jù)只包含一個變量,不處理原因或關系。單變量分析的主要目的是通過對數(shù)據(jù)的統(tǒng)計描述了解當前數(shù)據(jù)的基本情況,并找出數(shù)據(jù)的分布模型。
?單變量數(shù)據(jù)統(tǒng)計描述從集中趨勢上看,指標有:均值,中位數(shù),分位數(shù),眾數(shù);從離散程度上看,指標有:極差、四分位數(shù)、方差、標準差、協(xié)方差、變異系數(shù),從分布上看,有偏度,峰度等。需要考慮的還有極大值,極小值(數(shù)值型變量)和頻數(shù),構成比(分類或等級變量)。
?此外,還可以用統(tǒng)計圖直觀展示數(shù)據(jù)分布特征,如:柱狀圖、正方圖、箱式圖、頻率多邊形和餅狀圖。
15. 多元線性回歸
(1) 用途
?多元線性回歸模型(multivariable linear regression model ),因變量Y(計量資料)往往受到多個變量X的影響,多元線性回歸模型用于計算各個自變量對因變量的影響程度,可以認為是對多維空間中的點做線性擬合。
(2) 示例
(3) 結果分析
?直接通過返回結果中各變量的P值與0.05比較,來判定對應的解釋變量的顯著性,P0.05則認為自變量具有統(tǒng)計學意義,從上例中可以看到收入INCOME最有顯著性。
16. 邏輯回歸
(1) 用途
?當因變量Y為2分類變量(或多分類變量時)可以用相應的logistic回歸分析各個自變量對因變量的影響程度。
(2) 示例
(3) 結果分析
?直接通過返回結果中各變量的P值與0.05比較,來判定對應的解釋變量的顯著性,P0.05則認為自變量具有統(tǒng)計學意義。
前幾天寫了一篇直接在PowerBI里面使用度量值做一元回歸的內(nèi)容,雖然靈活性很高,但是實際中對一個結果影響的因素是很多的,還是使用多元回歸的場景更多。而且我們借助統(tǒng)計分析包不僅可以計算出回歸參數(shù),還可以看看一些衡量模型的重要指標,比如R2/調(diào)整的R2,還可以通過置信區(qū)間的設置來求出預測區(qū)間。
我們這次的案例是有四個影響GMV值得因素,UV訪客數(shù)、推廣費用的投入、整體商品降價水平(優(yōu)惠力度)和客服的服務評分,通過計算這四個因素的具體影響值來求出預測GMV,本次使用的是在PowerBI數(shù)據(jù)集的基礎上調(diào)用R script來實現(xiàn),下次再來用Python實現(xiàn)。數(shù)據(jù)和模型會放在最后供下載學習使用,數(shù)據(jù)如下↓
下面開始實現(xiàn),首先在PowerQuery里面加載數(shù)據(jù),加載的數(shù)據(jù)和我們原始數(shù)據(jù)內(nèi)容一樣,當然如果是訂單明細數(shù)據(jù),只需要進行一下按日期Group by就行了。
這就是我們需要處理的數(shù)據(jù)樣式,就是表格,在R語言里面叫做數(shù)據(jù)框,然后我們需要在PowerQuery里面調(diào)用R語言腳本,在Transform菜單下面最后一列↓
點擊后就會出現(xiàn)R語言腳本的編輯器,這里就不介紹R語言如何實現(xiàn)多元線性回歸模型的了,我記得之前R語言的集合里面有詳細介紹《R語言_018回歸》,有興趣的可以翻去看看。主要就是使用lm擬合多個參數(shù),然后我們這里再把擬合的結果求出來就行了,代碼也很簡單,如下↓
fit - lm(gmv ~ uv + promotion_exp + price_diff + service_score,
data=dataset)
df- data.frame(coef(fit))
names(df)[names(df)=="coef.fit."] - "coefficients"
df['variables'] - row.names(df)
再多說一句,不管是調(diào)用R語言還是Python,不管PowerQuery里面當前的流程是怎么命名的,在腳本編輯器里面的數(shù)據(jù)集都是用dataset命名的。最后運行結果如下↓
于是我們已經(jīng)得到了我們最需要的幾個參數(shù),根據(jù)我們的歷史數(shù)據(jù),得出來的截距是-41045,uv的影響是12.62(每新增100個用戶就會帶來1262的GMV),費用投入影響是24.21(每投入100元帶來2421的GMV),降價影響1074(每降價1元帶來1074GMV),服務評分影響是8855(評分每增加0.1分GMV增加885)??傮w看來各項因素對GMV都有一定的影響,在此基礎上,我們?nèi)绻胍_到目標的GMV,就可以從這幾方面入手了。
然后回到PowerBI,我們把這幾個參數(shù)用度量值寫下來,再把公式寫出來,DAX語句和結果如下↓
Intercept = CALCULATE(SUM('回歸系數(shù)'[coefficients]),'回歸系數(shù)'[variables]="(Intercept)")
UV = CALCULATE(SUM('回歸系數(shù)'[coefficients]),'回歸系數(shù)'[variables]="uv")
promotion_exp = CALCULATE(SUM('回歸系數(shù)'[coefficients]),'回歸系數(shù)'[variables]="promotion_exp")
price_diff = CALCULATE(SUM('回歸系數(shù)'[coefficients]),'回歸系數(shù)'[variables]="price_diff")
service_score = CALCULATE(SUM('回歸系數(shù)'[coefficients]),'回歸系數(shù)'[variables]="service_score")
關鍵值和預測GMV的公式我們都有了,我們就可以帶入相關值進行預測了,只需要新建四個參數(shù)就行了,然后新建一個預測的度量值就行了,度量值和結果如下↓
預測公式 =
"預計GMV公式 = " UNICHAR(10)
FORMAT([Intercept],"#0")
" + UV*" FORMAT([UV],"#0.00")
" + 費用*" FORMAT([promotion_exp],"#0.00")
" + 降價*" FORMAT([price_diff],"#0")
" + 服務分*" FORMAT([service_score],"#0")
當然我們還沒有結束,前面說過我們我們還可以加入很多值來判斷這個模型的好壞,其中一個很重要的指標就是R2和調(diào)整的R2,當然我們還可以檢驗線性關系、共線性等問題。這里我們以R2舉例,還是在PowerQuery里面來實現(xiàn),只需要把R語言代碼改一下就行了,代碼和結果如下↓
fit - lm(gmv ~ uv + promotion_exp + price_diff + service_score,
data=dataset)
s1 - summary(fit)
df - data.frame(name = c("R2","R2ajd"),
values = c(s1$r.squared,s1$adj.r.squared))
得到了R2和調(diào)整的R2,0.78,說明這個多元線性回歸模型還是相當?shù)牟诲e,如果在真實場景中有這么高的R2,就燒高香把。簡單說明前面的4個因素就已經(jīng)能夠解釋78%的結果了,價值非常高,再去找找其他因素整個模型就越來越完美了,然后我們照例把度量值建立起來,等一下放在圖里面,DAX語句如下↓
R2 = CALCULATE(SUM([values]),'R2'[name]="R2")
R2ajd = CALCULATE(SUM([values]),'R2'[name]="R2ajd")
上面我們是進行點預測的,就是影響參數(shù)值固定的,變量后預測的結果是一個固定的值,有時候我們還想看看預測的區(qū)間,看看整個區(qū)間我們能不能夠接受,這里我們就可以調(diào)用R語言里面回歸擬合結果的置信區(qū)間范圍值了,默認是95%的置信區(qū)間,我們就選用默認值,然后會求出區(qū)間兩界限的參數(shù)值,R語言代碼和結果如下↓
fit - lm(gmv ~ uv + promotion_exp + price_diff + service_score,
data=dataset)
dfc - confint(fit)#提供模型參數(shù)的置信區(qū)間(默認95%)
dfcd - data.frame(name = c("Intercept","uv","promotion_exp","price_diff","service_score"),
pct2.5 = dfc[,1],
pct97.5 = dfc[,2])
從結果我們就可以很清晰的看到上界和下界參數(shù)值了,然后我們再在PowerBI里面把各參數(shù)的度量值寫出來,DAX語句如下↓
p25 Intercept = CALCULATE(SUM([pct2.5]),'置信區(qū)間'[name]="Intercept")
p25 price_diff = CALCULATE(SUM([pct2.5]),'置信區(qū)間'[name]="price_diff")
p25 promotion_exp = CALCULATE(SUM([pct2.5]),'置信區(qū)間'[name]="promotion_exp")
p25 service_score = CALCULATE(SUM([pct2.5]),'置信區(qū)間'[name]="service_score")
p25 UV = CALCULATE(SUM([pct2.5]),'置信區(qū)間'[name]="uv")
p97 Intercept = CALCULATE(SUM([pct97.5]),'置信區(qū)間'[name]="Intercept")
p97 price_diff = CALCULATE(SUM([pct97.5]),'置信區(qū)間'[name]="price_diff")
p97 promotion_exp = CALCULATE(SUM([pct97.5]),'置信區(qū)間'[name]="promotion_exp")
p97 service_score = CALCULATE(SUM([pct97.5]),'置信區(qū)間'[name]="service_score")
p97 UV = CALCULATE(SUM([pct97.5]),'置信區(qū)間'[name]="uv")
然后根據(jù)度量值,把上下界的GMV預測函數(shù)寫出來,順便把合并的區(qū)間寫出來,DAX語句如下↓
預計GMV上線 =
[p97 Intercept] + [p97 UV]*[UV Value] + [p97 promotion_exp]*[推廣費用 Value] + [p97 price_diff]*[價格降低 Value] + [p97 service_score]*[服務評分 Value]
預計GMV下線 =
[p25 Intercept] + [p25 UV]*[UV Value] + [p25 promotion_exp]*[推廣費用 Value] + [p25 price_diff]*[價格降低 Value] + [p25 service_score]*[服務評分 Value]
預計GMV區(qū)間 = "[" FORMAT([預計GMV下線],"#,##0") " - " FORMAT([預計GMV上線],"#,##0") "]"
最后我們把所有度量值,點預測和區(qū)間預測結果,R2值放在一起,只需要進行參數(shù)調(diào)整就可以來進行數(shù)據(jù)預測了↓
當然這里我們不能夠選擇歷史數(shù)據(jù)的范圍,如果我們需要調(diào)整歷史數(shù)據(jù)的范圍,我們只能在PowerQuery里面進行調(diào)整,或者我們可以寫固定的日期值,比如我們可以固定最近90天或者180天的數(shù)據(jù),這里每天數(shù)據(jù)就會自動滾動變化了,用最新的只預測效果應該也會更好,我們這里使用90天的數(shù)據(jù)來看一下結果↓
可以看到結果還是有所差異的,不過R2還是很不錯,說明這個模型還是不錯的,今天寫的有點多了,過兩天再來用Python實現(xiàn)一下。
利用python進行線性回歸
理解什么是線性回歸
線性回歸也被稱為最小二乘法回歸(Linear Regression, also called Ordinary Least-Squares (OLS) Regression)。它的數(shù)學模型是這樣的:
y = a+ b* x+e
其中,a 被稱為常數(shù)項或截距;b 被稱為模型的回歸系數(shù)或斜率;e 為誤差項。a 和 b 是模型的參數(shù)。
當然,模型的參數(shù)只能從樣本數(shù)據(jù)中估計出來:
y'= a' + b'* x
我們的目標是選擇合適的參數(shù),讓這一線性模型最好地擬合觀測值。擬合程度越高,模型越好。
那么,接下來的問題就是,我們?nèi)绾闻袛鄶M合的質量呢?
這一線性模型可以用二維平面上的一條直線來表示,被稱為回歸線。
模型的擬合程度越高,也即意味著樣本點圍繞回歸線越緊密。
如何計算樣本點與回歸線之間的緊密程度呢?
高斯和勒讓德找到的方法是:被選擇的參數(shù),應該使算出來的回歸線與觀測值之差的平房和最小。用函數(shù)表示為:
這被稱為最小二乘法。最小二乘法的原理是這樣的:當預測值和實際值距離的平方和最小時,就選定模型中的兩個參數(shù)(a 和 b)。這一模型并不一定反映解釋變量和反應變量真實的關系。但它的計算成本低;相比復雜模型更容易解釋。
模型估計出來后,我們要回答的問題是:
我們的模型擬合程度如何?或者說,這個模型對因變量的解釋力如何?(R2)
整個模型是否能顯著預測因變量的變化?(F 檢驗)
每個自變量是否能顯著預測因變量的變化?(t 檢驗)
首先回答第一個問題。為了評估模型的擬合程度如何,我們必須有一個可以比較的基線模型。
如果讓你預測一個人的體重是多少?在沒有任何額外信息的情況下,你可能會用平均值來預測,盡管會存在一定誤差,但總比瞎猜好。
現(xiàn)在,如果你知道他的身高信息,你的預測值肯定與平均值不一樣。額外信息相比平均值更能準確地預測被預測的變量的能力,就代表模型的解釋力大小。
上圖中,SSA 代表由自變量 x 引起的 y 的離差平方和,即回歸平方和,代表回歸模型的解釋力;SSE 代表由隨機因素引起的 y 的離差平方和,即剩余平方和,代表回歸模型未能解釋的部分;SST 為總的離差平方和,即我們僅憑 y 的平均值去估計 y 時所產(chǎn)生的誤差。
用模型能夠解釋的變異除以總的變異就是模型的擬合程度:
R2=SSA/SST=1-SSE
R2(R 的平方)也被稱為決定系數(shù)或判定系數(shù)。
第二個問題,我們的模型是否顯著預測了 y 的變化?
假設 y 與 x 的線性關系不明顯,那么 SSA 相對 SSE 占有較大的比例的概率則越小。換句話說,在 y 與 x 無線性關系的前提下,SSA 相對 SSE 的占比越高的概率是越小的,這會呈現(xiàn)一定的概率分布。統(tǒng)計學家告訴我們它滿足 F 分布,就像這樣:
如果 SSA 相對 SSE 占比較大的情況出現(xiàn)了,比如根據(jù) F 分布,這個值出現(xiàn)的概率小于 5%。那么,我們最好是拒絕 y 與 x 線性關系不顯著的原始假設,認為二者存在顯著的線性關系較為合適。
第三個問題,每個自變量是否能顯著預測因變量的變化?換句話說,回歸系數(shù)是否顯著?
回歸系數(shù)的顯著性檢驗是圍繞回歸系數(shù)的抽樣分布(t 分布)來進行的,推斷過程類似于整個模型的檢驗過程,不贅言。
實際上,對于只有一個自變量的一元線性模型,模型的顯著性檢驗和回歸系數(shù)的檢驗是一致的,但對于多元線性模型來說,二者就不能等價了。
利用 statsmodels 進行最小二乘回歸
#導入相應模塊
In [1]: import numpy as np
In [2]: import pandas as pd
In [3]: import statsmodels.api as sm
#將數(shù)據(jù)導入 pandas 的 dataframe 對象,第一列(年份)作為行標簽
In [4]: df=pd.read_csv('/Users/xiangzhendong/Downloads/vincentarelbundock-Rdatasets-1218370/csv/datasets/longley.csv', index_col=0)
#查看頭部數(shù)據(jù)
In [5]: df.head()
Out[5]:
GNP.deflator ? ? ?GNP ?Unemployed ?Armed.Forces ?Population ?Year ?\
1947 ? ? ? ? ?83.0 ?234.289 ? ? ? 235.6 ? ? ? ? 159.0 ? ? 107.608 ?1947
1948 ? ? ? ? ?88.5 ?259.426 ? ? ? 232.5 ? ? ? ? 145.6 ? ? 108.632 ?1948
1949 ? ? ? ? ?88.2 ?258.054 ? ? ? 368.2 ? ? ? ? 161.6 ? ? 109.773 ?1949
1950 ? ? ? ? ?89.5 ?284.599 ? ? ? 335.1 ? ? ? ? 165.0 ? ? 110.929 ?1950
1951 ? ? ? ? ?96.2 ?328.975 ? ? ? 209.9 ? ? ? ? 309.9 ? ? 112.075 ?1951
Employed
1947 ? ?60.323
1948 ? ?61.122
1949 ? ?60.171
1950 ? ?61.187
1951 ? ?63.221
#設置預測變量和結果變量,用 GNP 預測 Employed
In [6]: y=df.Employed #結果變量
In [7]: X=df.GNP #預測變量
#為模型增加常數(shù)項,即回歸線在 y 軸上的截距
In [8]: X=sm.add_constant(X)
#執(zhí)行最小二乘回歸,X 可以是 numpy array 或 pandas dataframe(行數(shù)等于數(shù)據(jù)點個數(shù),列數(shù)為預測變量個數(shù)),y 可以是一維數(shù)組(numpy array)或 pandas series
In [10]: est=sm.OLS(y,X)
使用 OLS 對象的 fit() 方法來進行模型擬合
In [11]: est=est.fit()
#查看模型擬合的結果
In [12]: est.summary()
Out[12]:
#查看最終模型的參數(shù)
In [13]: est.params
Out[13]:
const ? ?51.843590
GNP ? ? ? 0.034752
dtype: float64
#選擇 100 個從最小值到最大值平均分布(equally spaced)的數(shù)據(jù)點
In [14]: X_prime=np.linspace(X.GNP.min(), X.GNP.max(),100)[:,np.newaxis]
In [15]: X_prime=sm.add_constant(X_prime)
#計算預測值
In [16]: y_hat=est.predict(X_prime)
In [17]: plt.scatter(X.GNP, y, alpha=0.3) #畫出原始數(shù)據(jù)
#分別給 x 軸和 y 軸命名
In [18]: plt.xlabel("Gross National Product")
In [19]: plt.ylabel("Total Employment")
In [20]: plt.plot(X_prime[:,1], y_hat, 'r', alpha=0.9) #添加回歸線,紅色
多元線性回歸(預測變量不止一個)
我們用一條直線來描述一元線性模型中預測變量和結果變量的關系,而在多元回歸中,我們將用一個多維(p)空間來擬合多個預測變量。下面表現(xiàn)了兩個預測變量的三維圖形:商品的銷量以及在電視和廣播兩種不同媒介的廣告預算。
數(shù)學模型是:
Sales = beta_0 + beta_1*TV + beta_2*Radio
圖中,白色的數(shù)據(jù)點是平面上的點,黑色的數(shù)據(jù)點事平面下的點。平面的顏色是由對應的商品銷量的高低決定的,高是紅色,低是藍色。
利用 statsmodels 進行多元線性回歸
In [1]: import pandas as pd
In [2]: import numpy as np
In [3]: import statsmodels.api as sm
In [4]: df_adv=pd.read_csv('g.csv',index_col=0)
In [6]: X=df_adv[['TV','Radio']]
In [7]: y=df_adv['Sales']
In [8]: df_adv.head()
Out[8]:
TV ?Radio ?Newspaper ?Sales
1 ?230.1 ? 37.8 ? ? ? 69.2 ? 22.1
2 ? 44.5 ? 39.3 ? ? ? 45.1 ? 10.4
3 ? 17.2 ? 45.9 ? ? ? 69.3 ? ?9.3
4 ?151.5 ? 41.3 ? ? ? 58.5 ? 18.5
5 ?180.8 ? 10.8 ? ? ? 58.4 ? 12.9
In [9]: X=sm.add_constant(X)
In [10]: est=sm.OLS(y,X).fit()
In [11]: est.summary()
Out[11]:
你也可以使用 statsmodels 的 formula 模塊來建立多元回歸模型
In [12]: import statsmodels.formula.api as smf
In [13]: est=smf.ols(formula='Sales ~ TV + Radio',data=df_adv).fit()
處理分類變量
性別或地域都屬于分類變量。
In [15]: df= pd.read_csv('httd.edu/~tibs/ElemStatLearn/datasets/SAheart.data', index_col=0)
In [16]: X=df.copy()
利用 dataframe 的 pop 方法將 chd 列單獨提取出來
In [17]: y=X.pop('chd')
In [18]: df.head()
Out[18]:
sbp ?tobacco ? ldl ?adiposity ?famhist ?typea ?obesity ?alcohol ?\
row.names
1 ? ? ? ? ?160 ? ?12.00 ?5.73 ? ? ?23.11 ?Present ? ? 49 ? ?25.30 ? ?97.20
2 ? ? ? ? ?144 ? ? 0.01 ?4.41 ? ? ?28.61 ? Absent ? ? 55 ? ?28.87 ? ? 2.06
3 ? ? ? ? ?118 ? ? 0.08 ?3.48 ? ? ?32.28 ?Present ? ? 52 ? ?29.14 ? ? 3.81
4 ? ? ? ? ?170 ? ? 7.50 ?6.41 ? ? ?38.03 ?Present ? ? 51 ? ?31.99 ? ?24.26
5 ? ? ? ? ?134 ? ?13.60 ?3.50 ? ? ?27.78 ?Present ? ? 60 ? ?25.99 ? ?57.34
age ?chd
row.names
1 ? ? ? ? ? 52 ? ?1
2 ? ? ? ? ? 63 ? ?1
3 ? ? ? ? ? 46 ? ?0
4 ? ? ? ? ? 58 ? ?1
5 ? ? ? ? ? 49 ? ?1
In [19]: y.groupby(X.famhist).mean()
Out[19]:
famhist
Absent ? ? 0.237037
Present ? ?0.500000
Name: chd, dtype: float64
In [20]: import statsmodels.formula.api as smf
In [21]: df['famhist_ord']=pd.Categorical(df.famhist).labels
In [22]: est=smf.ols(formula="chd ~ famhist_ord", data=df).fit()
分類變量的編碼方式有許多,其中一種編碼方式是虛擬變量編碼(dummy-encoding),就是把一個 k 個水平的分類變量編碼成 k-1 個二分變量。在 statsmodels 中使用 C 函數(shù)實現(xiàn)。
In [24]: est=smf.ols(formula="chd ~ C(famhist)", data=df).fit()
In [26]: est.summary()
Out[26]:
處理交互作用
隨著教育年限(education)的增長,薪酬 (wage) 會增加嗎?這種影響對男性和女性而言是一樣的嗎?
這里的問題就涉及性別與教育年限的交互作用。
換言之,教育年限對薪酬的影響是男女有別的。
#導入相關模塊
In [1]: import pandas as pd
In [2]: import numpy as np
In [4]: import statsmodels.api as sm
#導入數(shù)據(jù),存入 dataframe 對象
In [5]: df=pd.read_csv('/Users/xiangzhendong/Downloads/pydatafromweb/wages.csv')
In [6]: df[['Wage','Education','Sex']].tail()
Out[6]:
Wage ?Education ?Sex
529 ?11.36 ? ? ? ? 18 ? ?0
530 ? 6.10 ? ? ? ? 12 ? ?1
531 ?23.25 ? ? ? ? 17 ? ?1
532 ?19.88 ? ? ? ? 12 ? ?0
533 ?15.38 ? ? ? ? 16 ? ?0
由于性別是一個二分變量,我們可以繪制兩條回歸線,一條是 sex=0(男性),一條是 sex=1(女性)
#繪制散點圖
In [7]: plt.scatter(df.Education,df.Wage, alpha=0.3)
In [9]: plt.xlabel('education')
In [10]: plt.ylabel('wage')
#linspace 的作用是生成從最小到最大的均勻分布的 n 個數(shù)
In [17]: education_linspace=np.linspace(df.Education.min(), df.Education.max(),100)
In [12]: import statsmodels.formula.api as smf
In [13]: est=smf.ols(formula='Wage ~ Education + Sex', data=df).fit()
In [18]: plt.plot(education_linspace, est.params[0]+est.params[1]education_linspace+est.params[2]0, 'r')
In [19]: plt.plot(education_linspace, est.params[0]+est.params[1]education_linspace+est.params[2]1, 'g')
以上兩條線是平行的。這是因為分類變量只影響回歸線的截距,不影響斜率。
接下來我們可以為回歸模型增加交互項來探索交互效應。也就是說,對于兩個類別,回歸線的斜率是不一樣的。
In [32]: plt.scatter(df.Education,df.Wage, alpha=0.3)
In [33]: plt.xlabel('education')
In [34]: plt.ylabel('wage')
#使用*代表我們的回歸模型中除了交互效應,也包括兩個變量的主效應;如果只想看交互效應,可以用:代替,但通常不會只看交互效應
In [35]: est=smf.ols(formula='Wage ~ Sex*Education', data=df).fit()
In [36]: plt.plot(education_linspace, est.params[0]+est.params[1]0+est.params[2]education_linspace+est.params[3]0education_linspace, 'r')
In [37]: plt.plot(education_linspace, est.params[0]+est.params[1]1+est.params[2]education_linspace+est.params[3]1education_linspace, 'g')
參考資料:
DataRobot | Ordinary Least Squares in Python
DataRoboe | Multiple Regression using Statsmodels
AnalyticsVidhya | 7 Types of Regression Techniques you should know!
1、需要使用公式將回歸結果計算出來。
2、選擇回歸。
3、結果將其另存為,另存為到word中就可以保存了。