r - 在 R 中输入高阶交互项

标签 r logistic-regression

我正在运行一个包含 10 个自变量和 150,000 个观测值的逻辑模型。我想用每个交互项拟合一个模型,直至六阶。然而,当然,我们知道10选6是210,我不想手动输入这个模型。 R 中是否有一个命令可以用来自动包含最多 6 阶的每个交互项?

编辑:感谢 Dason 指出,实际上总共有 848 个参数,而不仅仅是 210 个六阶交互项。尽管如此,我确实想要拟合一个包含所有 848 个参数的模型。我知道我可以使用 polym() 函数来查找变量的所有六阶多项式,但这当然会比我想要的交互项要多得多的参数。

最佳答案

d <- as.data.frame(matrix(runif(15000),ncol=10))
m <- model.matrix(~.^6,data=d)
ncol(m) ## 848

但是,这不会处理高阶自交互项(例如,对于连续变量,它将有 x、y 和 x*y,但不是 x^2 也不是 y^2),对于连续变量来说,这可以说是一致的模型所必需的。 .代表“数据框中的所有变量”(如果将响应变量放在公式的LHS上,它将被排除在.之外); ^6 表示“最多 6 向的所有交互”。如果您想了解它在做什么,请查看 colnames(m)

我猜想这对于连续变量来说是可行的,但它太大了——我没有花太多时间考虑变量的数量如何随 n 和 p 缩放,但这很糟糕......

m2 <- do.call(polym,c(as.list(d[1:10,1:8]),degree=6))
ncol(m2) ## already 3002 columns

通过反复试验,我认为项数按 choose(n+p,p)-1 缩放,因此包含 10 个变量的完整六阶多项式模型将具有 8007 列。 ..

关于r - 在 R 中输入高阶交互项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24151580/

相关文章:

r - within() 函数的特殊语法

r - 将值从行分配到具有相同名称的列

python - 最接近 R nlminb 的 Python scipy 求解器模拟?

statistics - 分类变量的多重共线性

python-3.x - 从逻辑回归系数中导出新的连续变量

unit-testing - 机器学习算法的单元测试实现或包装

r - 将多个参数传递给 dplyr::summarise_if 中的函数

r - 每次我想在 R 中使用 foreach() 时,都必须注册 DoParallel() 和 stopCluster() 吗?

r - 将 R 中的 2 个预测概率图与 SjPlot 包结合起来

r - 逻辑回归 : glmer vs bife