r回归建模

R 报错:contrasts can be applied only to factors with 2 or more levels

回归模型里某个因子变量只有 1 个水平。常见于:subset() 之后某分类变量只剩一类、或者读入时该列被误判为因子但实际只有一个取值。

报错原文

Error in contrasts<- : contrasts can be applied only to factors with 2 or more levels

为什么会报这个错

回归模型里某个因子变量只有 1 个水平。常见于:subset() 之后某分类变量只剩一类、或者读入时该列被误判为因子但实际只有一个取值。

怎么解决

sapply(df, function(x) length(unique(x))) 找出只有 1 个唯一值的变量,从模型里去掉,或者先 droplevels() 清理因子水平。

代码示例

sapply(df, function(x) length(unique(x)))
df <- droplevels(df)
lm(y ~ x1 + factor(region), data = df)

同工具的其他报错

报错解决了,但方法还没搞懂?

报错只是表象。因果推断、面板数据、稳健性检验这些方法背后的逻辑,知识库里按「原理 × 直觉 × 代码」讲清楚了。

进入知识库 →