机器学习-5 线性回归 with R

一元线性拟合

  • 数据:见http://pan.baidu.com/s/1qu6dq
  • options(scipen = 100)
    
    # 读文件
    city_gdp <- read.table("D:/Sepcial_For_R/city_gdp.txt", 
                           sep = "\t",
                           col.names=c("city", "people", "gdp"), 
                           head = T);
    
    # 散点图,y ~ x
    plot(city_gdp$gdp ~ city_gdp$people)
    
    # 多元线性拟合
    # 线性拟合 lm(formula, data)
    #   formula: 执行拟合的模型形式,y ~ x1+x2+x3
    #   data: 包含拟合模型的数据框
    reg <- lm(city_gdp$gdp ~ city_gdp$people, data = city_gdp)
    
    # 拟合模型的详细结果
    summary(reg)
    
    # 查看拟合模型的预测值
    fitted(reg)
    
    # 查看拟合模型的残差值
    residuals(reg)
    
    # 作图
    plot(city_gdp$gdp ~ city_gdp$people,
         xlab="People",
         ylab="GDP")
    
    # 做拟合的直线
    abline(reg, col='red')
机器学习-5 线性回归 with R_第1张图片
上面coefficients中,Pr表示其系数显著为0的置信,越小约相关,星星多,约大约代表线性无关,星星少


机器学习-5 线性回归 with R_第2张图片

多项式拟合

# 多项式回归
reg2<-lm(city_gdp$gdp ~ city_gdp$people + I(city_gdp$people^2) + I(city_gdp$people^3),
        data = city_gdp)
summary(reg2)
plot(city_gdp$gdp ~ city_gdp$people,
     xlab="People",
     ylab="GDP")
lines(city_gdp$people, fitted(reg2), col="blue")
title("y = k0 + k1*x1 + k2*x1^2 + k3*x1^3")


机器学习-5 线性回归 with R_第3张图片
机器学习-5 线性回归 with R_第4张图片

多元线性拟合

# car的scatterplot,绘制二元关系图
# 可用通过 install.packages("car") 来安装
library(car)
scatterplot(city_gdp$gdp ~ city_gdp$people,
           data = city_gdp,
           spread = FALSE,
           lty = 2,
           pch = 18,
           main = "City Gdp",
           xlab="PeoPle",
           ylab="GDP")
# 虚线为线性拟合,实线为曲线平滑拟合;

# 多元线性回归
# 第一步: 将数据读到一个数据框
states <- as.data.frame(state.x77[,c("Murder",
                                     "Population",
                                     "Illiteracy",
                                     "Income",
                                     "Frost")])
# 第二步:最好检查一下变量的相关性
#   求相关性,去掉相关性很强的变量
cor(states)
libaray(car)
#   绘制散点矩阵,看个预测变量对因变量的贡献
scatterplotMatrix(states, spread=FALSE, lty=2, main="scatter plot matrix")

# 第三步:多元回归
multi_reg <- lm(Murder ~ Population + Illiteracy + Income + Frost,
                data = states)
summary(multi_reg)



机器学习-5 线性回归 with R_第5张图片
可以看出Murder谋杀有两个峰,其中Population和Illiteracy主要贡献左峰,Income和Forst主要贡献右边锋 
机器学习-5 线性回归 with R_第6张图片

Illiteracy文盲的线性关系最强,Frost的系数不为零的置信>0.95,可以看出其与谋杀不呈现线性关系,谋杀与霜冻无关;

当有多个预测变量时,回归系数代表在其他解释变量不变的前提下,当前解释变量每增加一个单位,因变量增加的量;

比如文盲的系数为4.14,代表其他预测变量不变,文盲上升1%,谋杀率上升4.14%

reference:



你可能感兴趣的:(机器学习)