R-機器學習【一】 線性迴歸(一元)

1、R安裝shell

R for Mac OS
函數

http://mirror.bjtu.edu.cn/cran/ 學習

RStudio
測試


2、線性迴歸基礎spa

翻閱《高中數學必修三 --- 變量的相關性》code

eg1:get

憑咱們的學習經驗可知,物理成績確實與數學成績有必定的關係。可是除此以外,還存在其餘影響物理成績的因素,例如,,是否喜歡物理,用再物理學習上的時間等
數學

eg2:io

商品銷售收入與廣告支出經費之間的關係,商品銷售收入與廣告支出經費有着密切的聯繫。可是還有不少其餘因素table

eg3:

糧食產量與施肥量之間的關係。在必定範圍內,施肥量越大,糧食產量就越高,可是施肥量並非影響糧食產量的惟一因素。


年齡 23 27 39 41 45 49 50
脂肪 9.5 17.8 21.2 25.9 27.5 26.3 28.2
年齡 53 54 56 57 58 60 61
脂肪 29.6 30.2 31.4 30.8 33.5 35.2 34.6

人體的脂肪含量與年齡之間的有怎樣的關係?

首先咱們作散點圖。以x軸表示年齡,y軸表示脂肪。(本身作散點圖,)

從散點圖,能夠看出,它們散佈在從左下角到右上角的區域。對於兩個變量的這種相關關係,咱們稱之爲正相關。還有一些變量,例如汽車的重量和汽車每消耗lL汽油所行駛的平均路程,稱爲負相關。

從散點圖能夠看出,這些點大體分佈在經過散點圖中心的一條直線附近。若是散點圖中心分佈從總體上看大體在一條直線附近,咱們就稱這兩個變量之間具備線性相關關係,這條直線稱爲迴歸直線(regression line).若是可以求出這條迴歸直線的方程(迴歸方程),那麼咱們就比較清楚瞭解年齡與脂肪的關係。


最小二乘法

實際上,求迴歸方程的關鍵是如何用數學的方法刻畫「從總體上看,各點到此直線的距離最小

假設該直線爲 y = bx + a

注意:

(x1,y1)(x2,y2)...(xi,yi).. 一個個點。到直線的距離,咱們能夠用點到直線的距離算出,可是這個比較複雜。

因此第一個簡化==> 點(xi,yi) ,垂直向上,或垂直向下到直線的距離  yi - y = yi - (bxi + a)

可是yi - y 有正負之分,因此咱們第二次簡化,算平方

Q = (y1 - bx1 - a)^2 + (y2 - bx2 - a)^2 + .... + (yi - bxi - a)^2 + ...

只要計算出使得Q的最小的a和b,就能獲得該回歸方程。 

能夠使用偏導數計算得出a,b

a = ...

b = ...


b是迴歸直線的斜率,a是截距


相關關係的強弱

咱們知道不是全部兩個變量的關係都是線性的,如何判斷是否能使用線性迴歸呢?

統計中用相關係數r來衡量兩個變量之間的線性關係強弱。

r = ...

統計學認爲 若是 r <- [-1,-0.75] 那麼負相關很強, r<- [-0.75,-0.30] 負相關性通常, r<- [-0.25,0.25] 相關性弱,

 r <- [0.75,1] 那麼正相關很強, r<- [0.30,0.75] 正相關性通常,


3、RStudio測試

數據:

研究嬰兒生理髮育issue,並收集了10名嬰兒在出生後一年內的月齡和體重數據。

年齡(月) 01 03 05 02 11 09 03 09 12
體重(kg) 4.4 5.3 7.2 5.2 8.5 7.3 6.0 10.4 10.2










03
6.1


咱們用c()函數以向量的形式輸入月齡和體重

> x_age=c(1,3,5,2,11,9,3,9,12,3)
> y_weight=c(4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1)

> mean(y_weight)            => 計算平均數
[1] 7.06
> sd(y_weight)              => 計算標準差
[1] 2.077498
> cor(x_age,y_weight)       => 計算相關性
[1] 0.9075655
> plot(x_age,y_weight)      => 畫散點圖

> cor_xy = lm(y_weight~x_age + 1)  => 設置擬合曲線方程式
> plot(cor_xy)                    => 畫迴歸直線

> coef(cor_xy)                    => 計算迴歸直線的斜率和截距
(Intercept)       x_age 
  4.3596206   0.4655827
  
> z = data.frmae(x_age=13)     
> predict(cor_xy,z)            => 咱們來預測13個月的嬰兒的體重
相關文章
相關標籤/搜索