3

我一直在处理这些数据

year rango_edad Sexo zona_2016 conteo siniestros expuestos upc_millon valor_millon freq 1 2010 01. < 1 F Alejada 180 87 75 121 111 0.48 2 2010 01. < 1 F Ciudades 103453 76219 40228 60755 84981 0.74 3 2010 01. < 1 F Especial 5129 3194 2078 3289 3013 0.62 4 2010 01. < 1 F Normal 27393 18436 10735 15656 16692 0.67 5 2010 01. < 1 M Alejada 185 98 73 116 110 0.53 6 2010 01. < 1 M Ciudades 106915 80731 41719 62991 105135 0.76 costo.medio ratio 1 1.27 0.92 2 1.11 1.40 3 0.94 0.92 4 0.91 1.07 5 1.12 0.94 6 1.30 1.67 我正在尝试用 gamlss 对频率进行建模

gamlss(freq~Sexo+zona_2016+rango_edad,family=PO(mu.link = "log"),data=na.omit(subset(datos,is.na(freq)==FALSE ))) gamlss(freq~Sexo+zona_2016+rango_edad,family=NBI(mu.link = "log"),data=na.omit(subset(datos,is.na(freq)==FALSE )))

但我收到了这个错误信息

Error in while (abs(G.dev.old - G.dev) > c.crit && iter < n.cyc) { : missing value where TRUE/FALSE needed

我该如何解决?

4

2 回答 2

2

响应变量不是计数,而是值从 0 到 1 的频率。此响应(目标)变量的适当模型是 beta 分布。请尝试家庭=BE。

于 2018-06-21T17:26:55.933 回答
1

我遇到了类似的错误,显然它是由使用分数响应值引起的。例如,在下面的代码中,案例 1 很好,但案例 2-4 失败:

resp1 <- rep(1, 6)
trt <- c("A", "A", "A", "B", "B", "B")
ftd1 <- gamlss(resp1 ~ trt, family = PO(mu.link = "log"))
resp2 <- rep(0.0001, 6)
ftd2 <- gamlss(resp2 ~ trt, family = PO(mu.link = "log"))
resp3 <- resp1
resp3[6] <- 0.0001
ftd3 <- gamlss(resp3 ~ trt, family = PO(mu.link = "log"))
resp4 <- resp1
resp4[6] <- 1.75
ftd4 <- gamlss(resp4 ~ trt, family = PO(mu.link = "log"))

要直接回答您的问题,请使用 glm() 或 glm2() 直到 gamlss 开发人员修复该问题(我向他们发送了此帖子的链接)。但是,正如另一个答案指出的那样,如果您的响应是介于 0 和 1 之间的比例,那么首先拟合泊松是没有意义的。

于 2018-06-21T16:42:19.580 回答