【问题标题】:I am getting factor error while using glm function in R在 R 中使用 glm 函数时出现因子错误
【发布时间】:2021-07-12 08:32:19
【问题描述】:

我有如下数据,并尝试用 R 编写足球预测。

Div                Date             HomeTeam           AwayTeam              FTHG            FTAG           FTR                 HTHG      
 Length:2184        Length:2184        Length:2184        Length:2184        Min.   :0.000   Min.   :0.000   Length:2184        Min.   :0.000  
 Class :character   Class :character   Class :character   Class :character   1st Qu.:1.000   1st Qu.:0.000   Class :character   1st Qu.:0.000  
 Mode  :character   Mode  :character   Mode  :character   Mode  :character   Median :1.000   Median :1.000   Mode  :character   Median :0.000  
                                                                             Mean   :1.539   Mean   :1.192                      Mean   :0.668  
                                                                             3rd Qu.:2.000   3rd Qu.:2.000                      3rd Qu.:1.000  
                                                                             Max.   :7.000   Max.   :7.000                      Max.   :5.000

FTR 包含 H(ome)、A(way)、D(raw)。所以它是 data.frame 中的字符。

当我在下面使用这段代码时:

glm.fits = glm(FTR ~ .,data=alldata,family=binomial)

我收到此错误:

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

我该如何解决?

编辑:我将 FTR 更改为矢量,仍然无法正常工作

解决方案:我决定将 FTR 从 A、H、D 更改为 A(离开)、NA(不离开)。我想这会解决问题。

【问题讨论】:

  • 你有一个多项式问题,所以不应该考虑二项式模型。目前尚不清楚为什么要将结果和位置混合在一个变量中。您的意思是输赢还是平局?
  • @IRTFM 我没有任何意思,我只是想让它工作,我需要 FTR 列的预测。我该怎么做?
  • 添加一个最小的可重现示例——使用dput() 收集您正在使用的数据并将其添加到您的帖子中。你会得到帮助的!
  • 很有可能,您的 Date 值是唯一的,因为它是一个字符,在这种情况下,拟合回归是没有意义的。你能排除日期吗
  • @StupidWolf 是的,我可以,我会努力的!你觉得是这个原因吗?

标签: r vector glm predict


【解决方案1】:

带有family=binomialglm 函数适合逻辑回归,该回归仅适用于恰好具有2 个水平的响应变量。

如果您想要对具有 3 个(或更多)级别的响应进行预测,那么您需要某种形式的分类/多项模型。如果对 3 个响应有逻辑顺序,则可以使用比例优势逻辑回归,MASS 包中的 polr 函数或 rms 包中的 lrm 函数实现这些(以及其他包中的其他函数) .

对于无序类别,它更复杂,但您可以搜索其他选项(只要确保您了解正在建模的内容),nnet 包中的multinom 函数就是其中之一。

【讨论】:

  • 我只是尝试使用 polr 和 lrm 函数,它们也给了我错误。即使它们是因素,我也会遇到错误。我应该将数据更改为数字吗?比如A:1,H:2,D:0
  • @sanwhere,在您的数据集上调用str 函数的结果是什么?这可以告诉我们 R 如何看待数据(我们可能将其视为一个因素,但 R 以不同的方式看待它)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多