我有一个包含年份、国家和公司标识符的数据面板。我想将 logit 模型拟合到使用data.table
. 如果我在每个年份国家子集中有足够的条目来拟合模型,我没有问题,但是如果年份国家子集中没有足够的数据,则会glm
引发错误并且我无法拟合所有模型. (我得到基本上相同的错误lm
。)
里面有解决办法data.table
吗?或者我应该在上游整理我的数据以确保没有数据不足的年份国家子集?
谢谢!
library(data.table)
# similar data
DT <- data.table(year=rep(2001:2010, each=100),
country=rep(rep(1:10, each=10), 10),
firm=rep(1:100, 10),
y=round(runif(100)),
x=runif(100)
)
setkey(DT, year, country)
# no problems if there are enough data per year-country subset
DT2 <- DT[, as.list(coef(glm(y ~ x), family="binomial")), by="year,country"]
# but `lm` throws and error if there are missing data
DT[(DT$year == 2001) & (DT$country == 1), "y"] <- NA
DT3 <- DT[, as.list(coef(glm(y ~ x, family="binomial"))), by="year,country"]
产量
> DT3 <- DT[, as.list(coef(glm(y ~ x, family="binomial"))), by="year,country"]
Error in family$linkfun(mustart) :
Argument mu must be a nonempty numeric vector