R语言线性回归模型

1. 载入数据

data(iris) # 载入iris数据集
# 查看数据集
summary(iris)
str(iris)
View(iris)

#划分数据集合
is_train <- sample(c(TRUE,FALSE),nrow(iris),replace=TRUE,prob=c(0.7,0.3))
train <- iris[is_train,] # training dataset
test <- iris[!is_train,] # test dataset

2. 模型拟合

### 模型拟合
# train$Species 为多分类变量,模型中为哑变量
lm_fit<- lm(train$Petal.Length~.,data = train)

summary(lm_fit)

# F统计量:它提供了模型的整体重要性。它评估至少一个预测变量是否具有非零系数。
# F统计量越大, 对应的统计显着性p值(p <0.05)越小
# Adjusted R-squared:模型中的自变量多大程度上解释了因变量,越大越好
# 残差标准误/残留标准误差(residual standard error, RSE),
# 也称为模型sigma(model sigma),是针对模型中预测变量数量进行调整的RMSE。
# RSE越低,模型越好。
# 实际上,RMSE(root mean squared error, RMSE)和RSE之间的差异很小,
# 尤其是对于多元数据(含有多个预测变量的模型)而言。

lm_fit2<- lm(train$Petal.Length~Sepal.Length+Petal.Width+Species,
            data = train)
lm_fit3<- lm(train$Petal.Length~Sepal.Length+Petal.Width,
             data = train)

3. 模型参数

## 模型参数
coef(lm_fit) 
#coefficients(lm_fit) 
df.residual(lm_fit) # 残差df,数据集的观测(行)总数减去所估计的变量数
deviance(lm_fit) # 模型偏差
residuals(lm_fit) # 拟合模型残差(训练集上)
confint(lm_fit) # 模型参数的置信区间,默认95%
fitted(lm_fit) # 模型的拟合值

4. 模型回归诊断

###  回归诊断
# 残差要符合正太分布
lm_res = residuals(lm_fit)  # 模型残差:预测值和实际值差
shapiro.test(lm_res)  # 检验是否正态分布 p<0.05:正态分布
par(mfrow=c(2,2))
plot(lm_fit)

5. 模型预测

### 模型预测
test_x <- test[,-3]
test_y <- test[,3]
# iris$Petal.Length 为iris 数据框第三列

# ?predict.lm
predict_y <- predict(lm_fit,test_x)
# predict_y <- predict(lm_fit,test_data,se.fit = TRUE)
# predict(lm_fit,test_data,interval="confidence")

plot(test_y,predict_y)

6. 模型选择

### 根据AIC选择模型
# step {stats}:Select a formula-based model by AIC.
# 赤池信息标准AIC,越小越好
st_fit <- step(lm_fit,derection = "both")
summary(st_fit)

7. 模型比较

###  模型比较
# anova {stats}:Compute analysis of variance (or deviance) tables 
# for one or more fitted model objects.
anova(lm_fit,lm_fit2,lm_fit3) # 模型间是否有显著差异
AIC(lm_fit,lm_fit2,lm_fit3) # AIC值越小的模型要优先选择

  • 3
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值