R語言線性回歸
回歸分析是一種應用非常廣泛的統計工具來建立兩個變量之間的關係模型。其中一個變量被稱為預測變量,其值是通過實驗收集的。另一變量稱為響應變量,其值是從預測變量而得。
線性回歸這兩個變量是通過一個等式,其中這兩個變量指數(冪)為1有關。 在數學上線性關係表示直線時為圖形。非線性關係,其中任何一個變量的指數不等於1創建曲線。線性回歸的一般數學方程為:
y = ax+b
以下是所使用的參數的說明:
- y 是響應變量
- x 是預測變量
- a 和 b 稱為係數常數
建立回歸步驟
回歸的一個簡單的例子是一個人的預測體重時,身高是已知的。要做到這一點,我們需要有一個人身高和體重之間的關係。
創建關係的步驟是:
- 進行收集身高觀測值的一個樣本和相應的權重的實驗
- 使用 lm() 函數在R創建關係模型
- 找到從所創建的模型的係數和使用這些創建的數學方程
- 獲取關係模式的總結,以知道在預測也稱殘值的平均誤差
- 預測新的人重量,使用 R 的 predict()函數
示例
輸入數據
下麵是代表觀測樣本數據:
# Values of height 151, 174, 138, 186, 128, 136, 179, 163, 152, 131 # Values of weight. 63, 81, 56, 91, 47, 57, 76, 72, 62, 48
lm() 函數
這個函數創建來預測和響應變量之間的關係模型。
語法
下麵是 lm() 函數的線性回歸的基本語法:
lm(formula,data)
以下是所使用的參數的說明:
- formula 是一個符號呈遞x和y之間的關係。
- data 是在其公式將被應用的向量。
創建關係模型及獲得係數
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131) y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48) # Apply the lm() function. relation <- lm(y~x) print(relation)
當我們上麵的代碼執行時,它產生以下結果:
Call: lm(formula = y ~ x) Coefficients: (Intercept) x -38.4551 0.6746
獲取相關的概要
x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131) y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48) # Apply the lm() function. relation <- lm(y~x) print(summary(relation))
當我們上麵的代碼執行時,它產生以下結果:
Call: lm(formula = y ~ x) Residuals: Min 1Q Median 3Q Max -6.3002 -1.6629 0.0412 1.8944 3.9775 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -38.45509 8.04901 -4.778 0.00139 ** x 0.67461 0.05191 12.997 1.16e-06 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 3.253 on 8 degrees of freedom Multiple R-squared: 0.9548, Adjusted R-squared: 0.9491 F-statistic: 168.9 on 1 and 8 DF, p-value: 1.164e-06
predict() 函數
語法
對於 predict()在線性回歸的基本語法是:
predict(object, newdata)
以下是所使用的參數的說明:
- object 使用 lm()函數創建公式。
- newdata 是向量包含預測變量的新值。
預測的新的人的重量
# The predictor vector. x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131) # The resposne vector. y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48) # Apply the lm() function. relation <- lm(y~x) # Find weight of a person with height 170. a <- data.frame(x=170) result <- predict(relation,a) print(result)
當我們上麵的代碼執行時,它產生以下結果:
1 76.22869
可視化的回歸圖形
# Create the predictor and response variable. x <- c(151, 174, 138, 186, 128, 136, 179, 163, 152, 131) y <- c(63, 81, 56, 91, 47, 57, 76, 72, 62, 48) relation <- lm(y~x) # Give the chart file a name. png(file = "linearregression.png") # Plot the chart. plot(y,x,col="blue",main="Height & Weight Regression", abline(lm(x~y)),cex = 1.3,pch=16,xlab="Weight in Kg",ylab="Height in cm") # Save the file. dev.off()
當我們上麵的代碼執行時,它產生以下結果: