我有一个数据框train
(21 个预测变量、1 个响应、1012 个观察值),我怀疑响应是预测变量的非线性函数。因此,我想对所有预测变量的响应执行多元多项式回归,然后尝试了解哪些是最重要的术语。为了避免标准多元多项式回归的共线性问题,我想将多元正交多项式与polym()
. 但是,我有相当多的预测变量,它们的名称并不遵循简单的规则。例如,在train
我有名为X2
, X3
and的预测变量X5
,但不是X1
and X4
。响应是X14
。有没有办法把公式写成lm
无需明确写出所有预测变量的名称?写作
OrthoModel=lm(X14~polym(.,2),data=train)
返回错误
Error in polym(., 2) : object '.' not found
编辑:我想拟合的模型包含大约 35 亿个术语,所以它没用。最好拟合一个只有主效应、交互作用和二级术语的术语 -> 231 个术语。我写了一个标准(非正交)二次多项式的公式:
`as.formula(paste(" X14 ~ (", paste0(names(Xtrain), collapse="+"), ")^2", collapse=""))`
whereXtrain
是train
通过删除响应列获得的X14
。但是,当我尝试在正交基础上表达多项式时,会出现解析文本错误:
as.formula(
paste(" X14 ~ (", paste0(names(Xtrain), collapse="+"), ")^2", "+",
paste( "poly(", paste0(names(Xtrain), ", degree=2)",
collapse="+"),
collapse="")
)
)