数据分享|用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化(上):https://developer.aliyun.com/article/1491704
穷举搜索
#穷举搜索 allabaone\_add<- sumr(ruetsings Sex + Legth Diamter + Hight + Whole\_eght + Shllweigh + Shucke\_weght + Viscea\_weigh , data=ablontra))
for(i in c(1:8)){ vr\_nm\[i\]=sum(all\_abwh\[i,\])-1 } plot(var\_num,all\_a)
(besr <- which.max(adjr2))
alabaoe_ad$hch\[bsj2,\]
#画出模型参数与AIC的关系图 n * log(a\_aln\_dd$rs / n) + 2 * (2:p)
plot(aloe\_mo\_ac ~ I(2:), ylab = "AIC" ")
现在我们看到了一些有趣的结果。之前我们看到t检验显示一些预测因子是不显著的,但是当我们进行穷举搜索时,它表明我们确实需要所有的预测因子来创建AIC值最低的模型。从图中可以看出,AIC值随着8个参数的模型大小而下降,并且是最小的。我们将再次使用数据集中的所有预测因子来创建模型,并寻找变量转换技术。
接下来,为了稳定恒定的变化,我们将进行一些因变量和预测变量的转换。
因变量转换
Box-Cox 变换
稳定方差的方法之一是使用对数转换因变量。为了得到正确的顺序,我们使用了boxcox方法,该方法建议使用$0的值。因为在0的值上,对数可能性最大,而且区间非常接近。因此,我们将使用log(Rings)形式的转换,用于我们的加性模型。
boxcox(abloe_ad lambda = seq(-0.1, 0.1, by = 0.1))
Additive 模型与对数因变量转换
summary(abaone\_dd\_log)
将因变量进行对数转换后,我们看到t检验是显著的,它也增加了先前加法模型的调整r平方值。我们还看到,在这个模型中,几乎所有的预测因子都是显著的。让我们检查一下假设。
模型假设
下面的拟合与残差图和Q-Q图显示,对因变量进行对数转换后,结果有了很大的改善。
assumptionsba
均方根分数
kable(log_rmse(abalo)
然而,我们没有看到RMSE分数有任何改善。恒定方差问题似乎得到了改善,QQ图也看起来不错。
下一步,我们将对预测器进行一些转换,并评估模型,看看这是否有助于进一步提高预测的准确性。
Predictor 转换
回归分析
为了使我们能够进行任何预测器的转换,首先让我们看看每个预测变量和因变量的关系。转换将取决于数据的形状以及预测因子和因变量之间的关系。
scatter(abale\_tra$Lngt,abaone\_train$Rngs,"Lenth""Rngs"),
我们可以看到环和预测指标长度、直径、高度的关系几乎是线性的。我们还可以看到,重量预测指标之间的关系并不是真正的线性关系,而是可以从多项式转换中受益。因此,让我们使用高阶多项式创建一个模型,即所有重量预测指标Whole\_weight、Viscera\_weight、Shucked\_weight和Shell\_weight。
多项式
在模型中使用二阶项后,模型假设相同。
asumptons(abloe\_dd\_oly2,"Poly2 Log Model")
均方根分数
kable(log_rmse(abaoly2,"Poly2 Log Moel)
均方根分数
在这里,我们进行了一些变量转换。首先,我们按照Boxcox方法的建议对因变量进行了对数转换,并按照对数图的建议对权重预测因子进行了多项式转换。在拟合模型后,我们看到rmse比以前的模型要低,与以前拟合的加性模型相比,它也有更好的恒定方差和Q-Q图。由于我们已经进行了程度为2的多项式转换,让我们尝试拟合程度为3的另一个模型并检查其意义。
方差分析 F 检验
anova(abaloe\_addpoy2,aalon\_add_oy3)
均方根分数
kable(log\_rmse(abaloe\_dd_pol4
方差分析 F 检验
anova
均方根分数
kable(log_rmse(abloneaddpoly5
方差分析 F 检验
anova
- 我们再次看到测试对于较低的 rmse 是显着的。让我们尝试拟合度数为 6 的模型。
均方根分数
kable(log\_rmseaban\_dd_poly6
方差分析 F 检验
anova
现在在用多项式次数为 6 进行拟合后,我们看到即使 F 检验表明它很重要,但检验的 RMSE 上升了。这表明我们现在可能已经开始过度拟合数据,即我们的模型非常接近地拟合数据,这是我们不希望发生的。
在此之前,我们看到多项式次数为 5 和 4 的测试和训练 RMSE 之间存在非常细微的差异。测试 RMSE 几乎相同。因此,我们愿意牺牲相对于更简单模型的 RMSE 非常微小的改进(第三个小数点)。因此我们选择多项式次数为 4 的模型,即模型 abalone\_add\_poly4。
for(d in um_poly){ abalone\_add\_polyestmodel(d) rmse=g\_log\_mse(balone\_ad\_poly) train_rmse\[d\]rmse$tran test_re\[d\]=rse$st } plot(train_rmse
我们看到多项式次数为 5 和 4 的测试和训练 RMSE 之间存在非常细微的差异。测试 RMSE 几乎相同。因此,我们愿意牺牲相对于更简单模型的 RMSE 非常微小的改进。因此我们选择多项式次数为 4 的模型,即模型 abalone\_add\_poly4。
既然我们已经选择了模型,让运行 AIC 和 BIC 方法进一步选择合适的模型,看看我们是否可以做进一步的改进。
现在让我们计算和比较高阶项的 RMSE,并绘制训练和测试数据的均方根误差。
多加法模型上的 AIC 和 BIC:
- 既然我们已经选择了模型,让我们运行
AIC
和BIC
方法来进一步选择合适的模型。
step(abane\_ad\_poy4, directin="backwrd", trac=FALSE)
Compare AIC 与 BIC 模型参数
_aic$call\[2\]
add_bic$call\[2\]
Anove F 检验
anova(abalone_mode
- 选择的模型
BIC
中没有预测器Length
。Anova F 检验的 p 值很大,因此我们无法拒绝原假设。abalone_model_add_bic
模型很重要,因此我们将继续推进并检查模型假设。
模型假设(AIC 和 BIC):
model_assumption
- 在这种情况下,恒定方差和正态性看起来都不错。
RMSE 分数 - AIC
kable(log\_rmse(abaone\_mde_down')
RMSE 分数 - BIC
kable(log\_rmse(abalone\_model\_add\_bic,paste("Additive Model - Degree 4 - BIC")), digits = 4,format = 'markdown')
在使用AIC 和 进行变量选择后 BIC,我们从中选择了模型 BIC 并检查了 t 统计量和假设。有趣的是, BIC 模型丢弃了很少的预测变量,但也具有与我们开始使用的原始模型(多项式次数为 4 的模型)相似的测试 RMSE。这表明我们可以删除一些变量并仍然保持较低的 RMSE。这将我们带到下一个修改和引入BIC 上述模型选择的变量之间的交互项 。
来自BIC 模型的模型假设 也看起来更好。
接下来,我们将介绍交互项,并将尝试使用BIC 方法建议的预测变量来拟合模型 。
交互模型
log(Rings) ~ Height + Diameter + poly(Whole_weight, 4) + poly(Viscera\_weight, 4) + poly(Shucked\_weight,4) + poly(Shell\_weight, 4) + Sex + Diameter:poly(Shucked\_weight, 4) + poly(Shucked_weight, 4):Sex
RMSE 分数
方差分析 F 检验
anova
在拟合交互模型并使用最佳可加模型执行 F 检验后,我们看到该检验表明交互模型是一个显着模型,具有改进的调整 r 平方值。RMSE 也变低了 因为它更好地解释了可变性,我们现在将选择交互模型并尝试在交互模型上运行 AIC 和 BIC。
同时,我们会比较交互模型的多个度数,以计算和比较高阶项的 RMSE,并绘制训练和测试数据的均方根误差。
for(d in num_poly){ ablone\_int\_poly=test_itmodel(d) rmse=et\_lg\_rmseaaloneint_poly) trainrse_int\[d\]=rmse$train test\_mse\_it\[d\]=rme$tst } plot(tran\_rse\_n
- 我们可以看到,随着多项式次数的增加,RMSE 越来越低。尽管对于此分析而言,RMSE 的这种改进非常微小,我们可以忽略这种对模型简单性的改进。考虑到这一点,我们可以看到多项式次数为 4 的模型性能更好,因此我们将继续使用该模型。
交互模型上的 AIC 和 BIC
step(aalone_int, diretin="backar", trac=FALSE) step(aalone_nt, diection="bacward", =loce=ALE)
RMSE 分数 - BIC/AIC
kable(log\_rmse(abalone\_model\_int\_bic,paste("Interaction Model - Degree 4 - BIC")), digits = 4,format = 'markdown')
在我们的交互模型上运行 AIC 和 BIC 后,我们看到该模型选择了相同的模型。由于这是我们迄今为止看到的最好的模型之一,具有合理的复杂性,我们将把它视为我们比较的候选模型之一,作为本分析的最佳拟合模型。
谈到候选模型,在详尽的搜索过程中,我们已经看到,当我们使用所有预测变量时,模型附带了最低的 AIC。我们可以尝试构建一个模型,其中包含所有具有交互作用和多项式次数的预测变量,并与我们选择的第一个候选模型进行比较,看看它的表现如何。因此,让我们拟合一个包含所有预测变量的模型。
在最初的数据分析中,我们发现Sex 因子水平为 female 和 的分类变量的分布 male 极其相似。因此,我们决定将这两个因子水平合并为一个,并且总因子水平为 2 infant 和 non-infant。我们创建了新变量 Infant。这里 non-infant 代表 female 和 male 两者。我们也通过这种方法进行了分析(可以在本报告的附录部分找到)。
让我们看看 Infant 模型分析,看看这个模型如何与我们上面选择的模型相抗衡。
婴儿模型分析
我们讨论过针对此分析采用不同的方法。我们引入了一个新的分类预测变量名称 Infant。我们使用现有的Sex 具有 3 个因子水平的分类预测变量,并创建了一个具有 2 个因子水平的新分类预测变量 。我们这样做是因为我们从原始分类预测变量female 和 中 确定了 2 个因子水平上的相似分布 male。新的因素水平现在是 I (婴儿 = 雌性和雄性组合)和 NI (非婴儿)。
这个新分类的分析与上面的分析完全一样,所以我们将用最少的解释和细节快速进行这个分析。
summary(abae\_d\_nf)
均方根分数
rmse <- funcin(atual predicted) { sqrt(mean((actual - predicted ^ 2)) }
加性模型假设
model_assumption
Box-Cox 变换
boxcox(abon_adinf,lmda seq(-0.1, 0.1, by = 0.1))
具有对数因变量转换的附加婴儿模型
summary(abaln\_ad\_log)
数据分享|用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化(下):https://developer.aliyun.com/article/1491706