广义相加模型(GAM)与向前逐步选择算法(基于R语言)

本文介绍如何使用R语言进行广义相加模型(GAM)的建立和优化,通过向前逐步选择算法选择最佳预测变量,并在College数据集上进行实践。通过对模型的评估和变量的非线性关系分析,最终优化了模型,提高了预测精度。
摘要由CSDN通过智能技术生成

广义相加模型(GAM)与向前逐步选择算法(基于R语言)

一、题目

(a)使用College数据集,以Outstate作为响应变量,其余作为预测变量,使用逐步回归得到一组合适的预测变量的子集。
(b)将观测数据分成训练集和测试集。在训练集上拟合广义可加模型,将Outstate作为响应变量,逐步回归得到的结果作为预测变量。画出拟合结果,解释你的发现。
(c)在测试集上评价前面得到的模型,并解释结果。
(d)如果有的话,观察哪些变量和响应变量有非线性关系。

二、向前逐步选择

导入college数据集后,先进行数据的预处理。
分类变量Private需改成数值型的0-1变量,便于线性回归。
数据集的第一列是大学名称,对于预测Outstate没有帮助,所以删去。(下列代码基于R语言)

library(data.table)
college = fread("C:\\Users\\39291\\Downloads\\College.csv", data.table = FALSE)#导入数据
college$Private = as.numeric(as.factor(college$Private)) - 1#将分类变量Private的Yes改成1,No改成0
college = college[, -1]#删去数据框的第一列

进行向前逐步回归,也就是根据RSS最低原则,不断增加预测变量的个数,得到不同预测变量个数的RSS较低的模型。
画出RSS与预测变量的关系,显然随着预测变量的增加,RSS单调减少。
画出调整后R2、Cp、BIC与模型预测变量个数的关系,并根据这三个准则选取最优模型。

library(leaps)
regfit.fwd = regsubsets(Outstate ~ ., data = college, nvmax = 18, method = "forward")  #向前逐步回归
par(mfrow = c(2, 2))  #告诉R:我要画一张带有4张子图的图片,每行两张图,共两列。
plot(summary(regfit.fwd)$rss, xlab = "Number of Variables", ylab = "RSS", type = "l")  #画出RSS与变量个数的关系图
plot(summary(regfit.fwd)$adjr2, xlab = "Number of Variables", ylab = "Adjusted RSq", 
    type = "l")  #画出调整后R2与变量个数的曲线图
which.max(summary(regfit.fwd)$adjr2)  #输出调整后R2准则下的最优
  • 9
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值