線性回歸入門(1)

1、什么是線性回歸

  • 線性回歸(Linear Regression)是利用數(shù)理統(tǒng)計中回歸分析椿疗,來確定兩種或兩種以上變量間相互依賴的定量關(guān)系的一種統(tǒng)計分析方法。
  • 線性回歸利用稱為線性回歸方程的最小平方函數(shù)對一個或多個自變量和因變量之間關(guān)系進行建模。這種函數(shù)是一個或多個稱為回歸系數(shù)的模型參數(shù)的線性組合。只有一個自變量的情況稱為簡單回歸,大于一個自變量情況的叫做多元回歸躁锁。

2、線性回歸模型的應用

線性回歸模型屬于經(jīng)典的統(tǒng)計學模型卵史,應用場景是根據(jù)已知變量(自變量)來預測某個連續(xù)的數(shù)值變量(因變量)战转。例如,餐廳根據(jù)每天的營業(yè)數(shù)據(jù)預測就餐規(guī)囊郧或營業(yè)額槐秧;醫(yī)生根據(jù)患者病例數(shù)據(jù)預測某種疾病發(fā)生的概率。

3、一元線性回歸

一元線性回歸刁标,也就是有一個自變量颠通,其模型可以表示為: y = a + bx + ?
其中,x為自變量,y為因變量命雀,a為截距,b為斜率斩箫,?為誤差項的隨機變量吏砂。a和b統(tǒng)稱為回歸系數(shù),誤差項?是為了平衡等號兩邊的值而存在乘客,通常被稱為模型無法解釋的部分狐血。可以這么來理解?:我們對y的預測是不可能達到與真實值完全一樣的易核,這個真實值只有上帝知道匈织,因此必然會產(chǎn)生誤差,我們就用?來表示這個無法預測的誤差牡直。

4缀匕、一元線性回歸實例

下面以《深入淺出統(tǒng)計學》最后一章的案例來演示一元線性回歸模型的應用:兩個兄弟打算開露天音樂會,可是不幸天上飄來烏云碰逸。他們想要根據(jù)天晴時數(shù)來預測出音樂會聽眾人數(shù)乡小。

import pandas as pd

h = [1.9, 2.5, 3.2, 3.8, 4.7, 5.5, 5.9, 7.2]
p = [22, 33, 30, 42, 38, 49, 42, 55]
df = pd.DataFrame({'晴天時數(shù)':h, '聽眾人數(shù)(百人)':p})
df
  
  晴天時數(shù)  聽眾人數(shù)(百人)
0   1.9            22
1   2.5            33
2   3.2            30
3   3.8            42
4   4.7            38
5   5.5            49
6   5.9            42
7   7.2            55

以上為樣本數(shù)據(jù),利用這些數(shù)據(jù)饵史,我們?nèi)绾位诋斕斓奶烨鐣r數(shù)估計出票情況满钟?

4.1 相關(guān)性

首先繪制散點圖,觀察一下兩個變量之間的關(guān)系

%matplotlib inline
import matplotlib.pyplot as plt

plt.scatter(df['晴天時數(shù)'], df['聽眾人數(shù)(百人)'], color='b')
1.png

通過散點圖趨勢可以看出晴天時數(shù)和聽眾人數(shù)成正相關(guān)關(guān)系胳喷,即隨著天晴時數(shù)的增加湃番,聽眾人數(shù)也會增加。那么如何通過晴天時數(shù)預測聽總會人數(shù)呢吭露?辦法就是在散點圖上畫一條直線吠撮,是這條直線盡量接近各個點。能最好的接近所有數(shù)據(jù)點的直線被稱為最佳擬合線讲竿。

import seaborn as sns

plt.rcParams['font.sans-serif'] = ['SimHei']
sns.lmplot(x='聽眾人數(shù)(百人)', y='晴天時數(shù)', data=df, ci=None)
2.png

通過上圖畫出來的就是最佳擬合線纬向,但是它是怎么求得的呢?

4.2 擬合線求解

如何確定兩個系數(shù)a和b呢?人們總是希望尋求一定的規(guī)則和方法戴卜,使得所估計的樣本回歸方程是總體回歸方程的最理想的代表逾条。最理想的回歸直線應該盡可能從整體來看最接近各實際觀察點,即散點圖中各點到回歸直線的垂直距離投剥,即因變量的實際值與相應的回歸估計值的誤差整體來說為最小师脂。由于誤差有正有負,正負會相互抵消,通常采用觀測值與對應估計值之間的誤差平方總和來衡量全部數(shù)據(jù)總的誤差大小吃警。因此糕篇,回歸直線應滿足的條件是:全部觀測值與對應的回歸估計值的誤差平方的總和為最小(最小二乘法)酌心,即:


最小
由于自變量x和因變量y的值都是已知的拌消,因此求解誤差平方和的問題就是求目標函數(shù)的最小值問題,而該函數(shù)的參數(shù)就是a和b安券。
該目標函數(shù)為一個二元二次函數(shù)墩崩,分別對a和b求偏導,令結(jié)果為0侯勉,即為目標函數(shù)的最小值鹦筹,同時求出a和b的值。
最終求得結(jié)果:

4.3址貌、Python實現(xiàn)

from sklearn import linear_model

linear = linear_model.LinearRegression()
linear.fit(df['晴天時數(shù)'].values.reshape(-1,1), df['聽眾人數(shù)(百人)'])
print('斜率b:', linear.coef_[0])
print('截距a:', linear.intercept_)

斜率b: 5.336410534890034
截距a: 15.728319304914475

所以線性回歸模型可表示為:聽眾人數(shù)(百人)= 15.73 + 5.34 * 晴天時數(shù)(小時)铐拐。 第二圖中的最佳擬合線即為此方程得出,被稱為回歸線练对。
這樣我們就可以預測不在數(shù)據(jù)集中的晴天時數(shù)對應的聽眾人數(shù)了遍蟋。兩兄弟說聽眾人數(shù)超過3500才不會賠本。我們可以利用回歸方程算下至少需要多少的晴天時數(shù)呢

h = (35 - 15.73) / 5.34
print('至少需要晴天%.2f小時才不會賠本' %h)

至少需要晴天3.61小時才不會賠本

模型算出來了螟凭,那么這個模型的擬合程度怎樣呢匿值?為此我們需要進行評估。
決定系數(shù)R2(R的平方),它是可以用x變量進行解釋的y變量的變異百分數(shù)赂摆,例如可以用決定系數(shù)指出露天音樂會聽眾人數(shù)中有多大比例的變異可以由預計天晴時數(shù)進行解釋挟憔。

  • 如果R2=0,則無法從x預測y值烟号。
  • 如果R2=1绊谭,則可以從x預測y值,且無誤差
  • 如果R2介于0和1之間汪拥,R2越接近1达传,越能通過x預測y;越接近0迫筑,x越無法預測y宪赶。

R2可以利用score()函數(shù)進行計算

linear.score(df['晴天時數(shù)'].values.reshape(-1,1), df['聽眾人數(shù)(百人)'])

0.8394574407934108

R2=0.84,可以看出模型的擬合程度還是可以的脯燃。

4.4搂妻、變量的顯著性檢驗

變量的顯著性檢驗的目的:剔除回歸系數(shù)中不顯著的解釋變量(也就是X),使得模型更簡潔辕棚。在一元線性模型中欲主,我們只有有一個自變量X邓厕,就是要判斷X對Y是否有顯著性的影響;多元線性回歸中扁瓢,驗證每個Xi自身是否真的對Y有顯著的影響详恼,不顯著的就應該從模型去掉。

這里用到statsmodels模塊中的summary()函數(shù)進行驗證

import statsmodels.api as sm
df.columns = ['h', 'p']
model = sm.formula.ols('p~h', data=df).fit()
model.summary()

Dep. Variable:  p   R-squared:  0.839
Model:  OLS Adj. R-squared: 0.813
Method: Least Squares   F-statistic:    31.37
Date:   Thu, 21 Feb 2019    Prob (F-statistic): 0.00138
Time:   20:52:56    Log-Likelihood: -22.359
No. Observations:   8   AIC:    48.72
Df Residuals:   6   BIC:    48.88
Df Model:   1       
Covariance Type:    nonrobust       
coef    std err t   P>|t|   [0.025  0.975]
Intercept   15.7283 4.437   3.545   0.012   4.871   26.586
h   5.3364  0.953   5.601   0.001   3.005   7.668
Omnibus:    2.454   Durbin-Watson:  3.403
Prob(Omnibus):  0.293   Jarque-Bera (JB):   0.846
Skew:   0.188   Prob(JB):   0.655
Kurtosis:   1.452   Cond. No.   13.3

T檢驗(P>|t|=0.001)用于對某一個自變量Xi對于Y的線性顯著性引几,如果某一個Xi不顯著昧互,意味著可以從模型中剔除這個變量,使得模型更簡潔伟桅。p值小于0.05即通過顯著性檢驗敞掘。
F檢驗(F-statistic=31.37)用于對所有的自變量X在整體上看對于Y的線性顯著性。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末贿讹,一起剝皮案震驚了整個濱河市渐逃,隨后出現(xiàn)的幾起案子够掠,更是在濱河造成了極大的恐慌民褂,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疯潭,死亡現(xiàn)場離奇詭異赊堪,居然都是意外死亡,警方通過查閱死者的電腦和手機竖哩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門哭廉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人相叁,你說我怎么就攤上這事遵绰。” “怎么了增淹?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵椿访,是天一觀的道長。 經(jīng)常有香客問我虑润,道長成玫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任拳喻,我火速辦了婚禮哭当,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘冗澈。我一直安慰自己钦勘,他們只是感情好,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布亚亲。 她就那樣靜靜地躺著个盆,像睡著了一般脖岛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上颊亮,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天柴梆,我揣著相機與錄音,去河邊找鬼终惑。 笑死绍在,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的雹有。 我是一名探鬼主播偿渡,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼霸奕!你這毒婦竟也來了溜宽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤质帅,失蹤者是張志新(化名)和其女友劉穎适揉,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體煤惩,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡嫉嘀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了魄揉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剪侮。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖洛退,靈堂內(nèi)的尸體忽然破棺而出瓣俯,到底是詐尸還是另有隱情,我是刑警寧澤兵怯,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布彩匕,位于F島的核電站,受9級特大地震影響摇零,放射性物質(zhì)發(fā)生泄漏推掸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一驻仅、第九天 我趴在偏房一處隱蔽的房頂上張望谅畅。 院中可真熱鬧,春花似錦噪服、人聲如沸毡泻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仇味。三九已至呻顽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間丹墨,已是汗流浹背廊遍。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贩挣,地道東北人喉前。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像王财,于是被迫代替她去往敵國和親卵迂。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349