當咱們在研究兩個數值型變量的關係時,經常首先以其中一個變量爲橫座標,另外一個變量爲縱座標畫一個散點圖,這樣能夠快速直觀地知道兩個變量的大體關係。若是呈現較爲明顯的線性關係,則咱們能夠選擇線性迴歸來擬合兩者的關係;若是無明顯直線關係,而是呈現未知的曲線關係,這時候,咱們可選擇使用polynomial regression來擬合二者的關係。markdown
Polynomial regression, 中文應該是叫多項式迴歸,一個因變量一個預測變量(獨立變量)的多項式迴歸模型以下公式:dom
polynomial_model.png函數
其中,X 是獨立變量, beta (若是這裏沒有正常顯示希臘字符,必定是簡書markdwon出了問題了)是須要求解的係數,h 表示多項式的度。咱們在用多項式迴歸擬合數據時,通常須要設置的參數即是上面公式中的 h,這個我不是很懂該怎麼選,可能有經驗的人從散點圖中能夠看出來選什麼比較好,我就是從h=2開始嘗試,依次往上增長,看哪一個擬合數據最好。spa
本實例也是比較簡單,就是想知道變量Y跟變量X之間的關係,實例數據總共包含150個數據點,下表給出了部分數據概覽:code
image.pngorm
由於X有重複值,能夠看成因子先簡單畫個盒圖(橫軸是X,縱軸是Y)看看,從途中能夠看到Y是隨着X的增加而增加的,並且看起來也不是顯著的呈線性關係。ip
image.pngci
雖然多項式迴歸用於擬合兩個變量之間的非線性關係,可是,從前面公式能夠看出,它對於係數 beta來講仍是線性形式,因此實現起來仍是看成線性來求解的。在R語言中,其也是經過線性模型函數來實現的:input
dat <- read.table("input.txt",header = TRUE) fit.plm <- lm(y~poly(x,2),data = dat) # h=2 ,if h=3, then use poly(x,3)summary(fit.plm) # 查看擬合的結果
結果:it
Call:lm(formula = y ~ poly(x, 2), data = dat) Residuals:Min 1Q Median 3Q Max-35.160 -4.300 0.668 2.830 70.840 Coefficients:Estimate Std. Error t value Pr(>|t|)(Intercept) 13.453 1.117 12.043 < 2e-16 ***poly(x, 2)1 161.568 13.682 11.809 < 2e-16 ***poly(x, 2)2 88.267 13.682 6.451 1.51e-09 *** Signif. codes: 0 ‘’ 0.001 ‘’ 0.01 ‘’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 13.68 on 147 degrees of freedomMultiple R-squared: 0.5519, Adjusted R-squared: 0.5458F-statistic: 90.53 on 2 and 147 DF, p-value: < 2.2e-16
上面的擬合結果來看,使用2次多項式迴歸擬合咱們的數據還比較合適。即咱們使用的模型是: y = beta0 + beta1x + beta2x^2 (公式都無法被markdown解析了,你們將就下看吧,抱歉了);這裏擬合的係數看上面結果的 「Coefficients」 部分,beta0 = 13.45, 對應的p-value < 2e-16; beta1 = 161.56, p-value < 2e-16;beta2 = 88.26, p-value = 1.51e-09;p-value都很顯著;再看看決定係數R2(即R-squared), R2 = 0.55, 整體檢驗p-value<2.2e-16,(這裏決定係數的解釋,你們能夠去谷歌查看一下線性迴歸分析中它的解釋)。