ASReml二项分布混合模型预测值为负的问题求助
问题原因及解决方法
原因分析
你得到的负值是**链接尺度(logit尺度)**的预测结果,而非实际的寄生虫流行率概率。
在logit二项模型中,ASReml默认输出的是线性预测器的值,也就是log(p/(1-p))(其中p为寄生虫存在的概率)。这个值的范围是负无穷到正无穷:当p接近0时,logit值会是负数;p接近1时则为正数。所以出现负值是模型在链接尺度下的正常输出,并非错误,只是没有转换回符合实际意义的概率尺度。
解决方法
有两种方式可以得到0-1范围内的概率预测值:
方法1:直接在predict中指定响应尺度
修改predict函数,添加type="response"参数,让ASReml直接返回概率尺度的预测结果:
pvp <- predict(nmod11, classify = "Sex + Sample_Period", levels = list(Sex = c("F","M"), Sample_Period = seq(1,12,1)), type = "response")
方法2:手动转换链接尺度结果
如果已经得到了链接尺度的预测值,可以用logit逆函数将其转换为概率:
# 假设链接尺度的预测值存储在pvp$pvals$predicted列中 pvp$pvals$probability <- exp(pvp$pvals$predicted) / (1 + exp(pvp$pvals$predicted))
转换后的probability列就是符合实际意义的寄生虫流行率概率,取值范围会严格落在0到1之间。
内容的提问来源于stack exchange,提问作者alex
相关产品推荐
相关产品推荐

