运行rethinking包quap模型报错:non-finite value supplied by optim
问题分析与解决
你的代码里有两个关键错误导致了这个报错:
- 模型里用了
ID作为分组变量,但你的数据框里的分组列叫GID,变量名不匹配,程序找不到ID,进而引发优化过程中的非有限值错误。 Total <- Total[ID]这行完全多余,你的数据里已经有Total列,直接调用即可,这行代码不仅没用,还会因为ID不存在而加重错误。
修正后的代码
library(rethinking) G <- c("D","ND") Purple <- c(670, 601) Pink <- c(315,604) Total <- c(985, 1205) GID <- c(1,2) Data <- data.frame(G, Purple, Pink, Total, GID) model_1a <- quap( alist( Purple ~ dbinom(Total, p), p <- a[GID], # 替换ID为GID,匹配数据列名 a[GID] ~ dbeta(10,10) ), data = Data) precis(model_1a, depth=2)
运行修正后的代码就能正常得到模型结果了。教授的代码能运行,大概率是他的数据里分组变量叫ID,或者你抄录时不小心写错了变量名。
内容的提问来源于stack exchange,提问作者Esat
相关产品推荐
相关产品推荐

