尝试使用R中的MASS包运行负二项式回归

问题描述

我正在尝试对以下项进行负二项式回归:

df <- structure(list(Year = c("2018","2018","2019","2019"),Month = c("1","10","11","12","2","3","4","5","6","7","8","9","1","6"),count = c(109L,91L,73L,74L,94L,113L,92L,100L,114L,111L,106L,86L,116L,84L,78L,98L
),year_mon = c("2018 - 1","2018 - 10","2018 - 11","2018 - 12","2018 - 2","2018 - 3","2018 - 4","2018 - 5","2018 - 6","2018 - 7","2018 - 8","2018 - 9","2019 - 1","2019 - 2","2019 - 3","2019 - 4","2019 - 5","2019 - 6")),row.names = c(NA,-18L),groups = structure(list(
    Year = c("2018",.rows = structure(list(1:12,13:18),ptype = integer(0),class = c("vctrs_list_of","vctrs_vctr","list"))),row.names = 1:2,class = c("tbl_df","tbl","data.frame"),.drop = TRUE),class = c("grouped_df","tbl_df","data.frame"))

我认为这是除泊松回归之外最好的回归技术,但我运行以下方法...。

library(MASS)
summary(glm.nb(count ~ year_mon,data=df))

..并收到此错误...

Error in while ((it <- it + 1) < limit && abs(del) > eps) { : 
        missing value where TRUE/FALSE neededError in while ((it <- it + 1) < limit && abs(del) > eps) { : 
                missing value where TRUE/FALSE needed

不确定在这里我到底在做什么错。为此,我并不完全赞同负二项式,但我希望将另一个模型与不仅仅是Poisson进行比较,这看起来很合适。

解决方法

正如@rawr所说,您需要将预测变量转换为某种数值:否则,分类预测变量的每个级别只有一个点。例如,此方法有效:

    state = {
        loading: true,city: null,}
    async componentDidMount(){
        const url = ...;
        const response = await fetch(url,{
            headers: {
                ...
            }
        })
        const data = await response.json();
        this.setState({city: data.results[0],loading: false})
    }

...

<select>
  <option>Select city</option>
  <option>
    {this.state.loading || !this.state.city ? (<p>Loading...</p>) : 
    (<p>{ this.state.city.name }</p>)}
  </option>
</select>

...尽管先修改数据框内的变量(或在数据框内创建新的变量)比即时进行转换可能更好/更具可读性

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...