我对R很陌生,我认为我的问题很简单,但似乎无法解决。我在这里查看过类似的问题,但似乎无法找到解决我的特定问题的解决方案。
我正在使用ISLR软件包中附带的Wage数据集,尝试根据不同多项式年龄的函数对工资进行建模。
library(ISLR)
attach(Wage)
我正在对年龄在10岁以下的工资进行回归分析,然后我希望对每个模型进行方差分析并调查结果。我最接近的是这个。
for (i in 1:10) {
fit[[i]] <- lm(wage~poly(age, i) , data = Wage)
result[[i]] <- aov(as.formula(paste(fit[i], "~ wage")))
}
导致此错误;
Error in model.frame.default(formula = as.formula(paste(fit[i], "~ wage")), :
变量'list的无效类型(列表)(系数= c((Intercept)
= 111.703608201744,poly(age, i)
= 447.067852758315),残差= c(231655
= -19.3925481434428,86582
= -28.2033380861585,161300
= 17.4500251413464,155159
= 42.5676926169455,11443
= -42.0253778623369,376662
= 7.21810821763668,450601
= 56.7036617292801,377954
= 8.79783605559716,228963
= 8.18131081863092,81404
= 10.197404483506,302778
= 3.61466467869064,305706
= -24.4688637359983,8690
= -16.9669134309657,153561
= 25.4168784550536,449654
= 14.807739524331,447660
= -27.2938944517631,160191
= -25.1943075097583,230312
= 95.773820436023,301585
= 95.773820436023, ] = 7.84450555272621,153682
= -9.27460094600634,158226
= 91.9620415895517,11141
= -59.5891117312741,448410
= -49.3664897185768,305116
= 50.6467028157233,233002
= -14.5085059894098,8684
= 161.240161560035229379
= -28.0716427246922,86064
= -40.6412633049063,378472
= -5.75413931818888,`1
任何帮助都是如此R菜鸟,将深表歉意。
谢谢!
要回答您的问题,您可以执行:
library(ISLR)
attach(Wage)
fit <- vector("list",10)
result <- vector("list",10)
for (i in 1:10) {
thisForm <- paste0("wage~poly(age, ",i,")")
fit[[i]] <- lm(thisForm , data = Wage)
result[[i]] <- aov(fit[[i]])
}
上面我创建了公式,以便您可以在fit / aov对象中看到它,而不是使用i。
请注意,lm拟合已经在aov对象中,这意味着,您可以直接在aov对象上获取lm的系数,进行预测并执行所需的操作。您不需要单独存储lm fit:
coefficients(result[[1]]) ; coefficients(fit[[1]])
(Intercept) poly(age, i)
111.7036 447.0679
(Intercept) poly(age, i)
111.7036 447.0679