用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化(一)https://developer.aliyun.com/article/1485792
方差分析 F 检验
anova(small,ablone_add)
根据Anova检验,我们可以拒绝无效假设。
现在让我们尝试对加性模型进行AIC和BIC的参数选择。
#在加性模型上运行AIC和BIC step(abae_add, dtonbackward" trace0)
step(abalon_ad, direction="backward"
我们使用之前Anova F测试中的最佳模型(abalone_add)运行了AIC和BIC方法,AIC和BIC都选择了没有Length预测器的相同模型。
我们选择了BIC的模型(因为两个模型都是一样的),并将绘制拟合与残差和QQ正态图。
加性模型假设
assumptions(aln\_odad\_bic,"baln_meddbic")
这里我们看到,拟合图与残差图表明,模型违反了恒定方差,似乎有一种模式,即残差随着拟合值的增加而增加。
正态QQ图也有肥尾,表明误差可能不是正态分布。
表明我们可能需要寻找改进这个模型。尽管多重共线性对预测没有影响,但这看起来是一个极端的案例,有一个明显的模式违反了模型的假设。这可以通过几种技术来实现,例如变量选择和转换。让我们来看看变量选择方法,看看哪些变量可以用来创建另一个不违反恒定方差和正态性假设的模型。
穷举搜索
#穷举搜索 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
模型很重要,因此我们将继续推进并检查模型假设。
用加性多元线性回归、随机森林、弹性网络模型预测鲍鱼年龄和可视化(三)https://developer.aliyun.com/article/1485804