回归在输入变量之一上给出错误“对比只能应用于具有2个或更多水平的因素”[重复]

Posted

技术标签:

【中文标题】回归在输入变量之一上给出错误“对比只能应用于具有2个或更多水平的因素”[重复]【英文标题】:Regression gives error on one of the input variables "contrasts can be applied only to factors with 2 or more levels" [duplicate] 【发布时间】:2015-07-10 21:43:00 【问题描述】:

我正在使用大量输入变量在 R 中运行 logit 回归。

newlogit <- glm(install. ~ SIZES + GROSSCONSUMPTION.... + 
                NETTCONSUMPTION..... + NETTGENERATION....... + 
                GROSSGENERATION.... + Variable. + Fixed + 
                Cost.of.gross.cons + Cost.of.net.cons + Cons.savings + 
                generation.gains + Total.savings + Cost.of.system + 
                Payback + Self.consumption + Total.consumption.as.solar + 
                Owner.occupied + postcode + Suburb + Market.penetration + 
                X..green.vote, data = newdata, family = "binomial")

我收到此错误:

对比错误

您能否告知为什么会发生此错误以及是否有办法运行此回归?

【问题讨论】:

如果没有minimum reproducible example,就不可能知道为什么会发生这种情况。我的猜测是,大量输入变量中的一个或多个变量只有一个唯一值。 【参考方案1】:

我已经看到当模型右侧的变量之一是具有单个水平的因素时会发生此问题。

如果是这种情况,您需要做的就是从模型中删除该因素。

【讨论】:

如果我需要这个变量怎么办?应该可以在不删除的情况下做某事吧? 如果它只有一个级别,您不需要它,因为它不包含您的模型的任何信息。【参考方案2】:

它反对您的变量之一(如 gvrocha 所说);你可能有一个只有一个级别的因素,或者一个字符串。

快速追踪有问题的变量的一个技巧是进行区间二等分并增加/减少 col 索引,直到触发错误。

glm最好使用数值(column-index)接口(@98​​7654322@,见[1])

而不是公式界面glm(install. ~ var1 + var2 + ...

[1]Dynamic formula creation in R?

【讨论】:

以上是关于回归在输入变量之一上给出错误“对比只能应用于具有2个或更多水平的因素”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 lm 构建回归模型时出错(`对比<-`中的错误(`*tmp*`...对比只能应用于具有2个或更多级别的因素)[重复]

当“对比只能应用于具有 2 个或更多水平的因素”时如何进行 GLM?

`contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) 中的错误:对比只能应用于具有 2 个或更多级别的因子

“对比”错误中的错误

数据挖掘核心算法之一--回归

MATLAB 多项 Logistic 回归输入