问题描述
我正在尝试对以下项进行负二项式回归:
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>
...尽管先修改数据框内的变量(或在数据框内创建新的变量)比即时进行转换可能更好/更具可读性