当某些列是不同的类时如何对所有变量进行线性回归[重复]
Posted
技术标签:
【中文标题】当某些列是不同的类时如何对所有变量进行线性回归[重复]【英文标题】:How to run linear regression on all variables when some columns are different classes [duplicate] 【发布时间】:2017-07-16 06:52:48 【问题描述】:我的数据框中有 1000 多列。我想对所有变量进行线性回归,不想一一写出来。当我尝试这个时,
lm(goal ~ ., data = df)
我收到此错误:
contrasts<-
(*tmp*
, value = contr.funs[1 + isOF[nn]]) 中的错误: 对比只能应用于具有 2 个或更多级别的因素
我有包含字符类、因子、数字等的列。我猜我应该删除不能是变量的列。我该怎么做?
【问题讨论】:
这似乎是说您传递给回归的因子变量之一只有一个级别。所以找到它并省略它。您可以通过sapply(d[sapply(d, is.factor)], nlevels)
找到这些;寻找只有一级的人
这似乎是一种极其懒惰的态度。
偷懒不好吗?难道我们不应该总是想做一些懒惰的事情来为其他活动腾出更多的时间。我真的应该写出 1000 多个变量吗?我计划使用 3000 多个变量。我为什么要浪费时间写出来?
【参考方案1】:
您可以使用减法 -
运算符排除有问题的变量
lm(goal ~ . - var, data = df)
【讨论】:
要找到要以这种方式删除的列集,您应该检查只有一个值的列。对于数字,它可以被描述为零方差,但可能是数字和因子类型的混合。像which(sapply(df, function(x) length(unique(x)))== 1)
这样的东西应该会让你删除列索引。以上是关于当某些列是不同的类时如何对所有变量进行线性回归[重复]的主要内容,如果未能解决你的问题,请参考以下文章
spss进行线性回归分析时,相关系数都符合,但是显著性不符合,如何调整
在多元线性回归分析中,t检验与F检验有何不同?在一元线性回归分析中二者是不是有等价的作用?