我正在使用R中的重新思考包来制作一个简单的线性模型。在下面的代码中,我使用了因变量的先验正态分布,一切运行良好。
library(rethinking)
col <- alist(
courework_n ~ dnorm(mean,0.2),
mean <- a + b*result_n + c,
a ~ dnorm(0,10),
b ~ dnorm(0,10),
c ~ dnorm(0,10)
)
colmap <- map( col , data.frame(data) )
但是当我使用R不直接支持的三角形分布包时,我得到以下错误
地图错误(col,data.frame(data)):未使用的参数(log = TRUE)
这是使用三角形分布
定义模型的代码install.packages("RTriangle")
library(triangle)
col <- alist(
courework_n ~ dtriangle(0,1,mode),
moda <- a + b*result_n + c,
a ~ dnorm(0,10),
b ~ dnorm(0,10),
c ~ dnorm(0,10)
)
col_map <- map( col , data.frame(data) )
答案 0 :(得分:1)
因为dtriangle
分布未包含log
参数,因为R / rethinking
中的概率分布函数是预期的。
您可以按如下方式破解dtriangle
功能:
dput(dtriangle,file="my_dtriangle.R")
将功能代码保存到文件 my_dtriangle <- function (x, a = 0, b = 1, c = (a + b)/2, log=FALSE)
return(apply(params, 1, dTest))
)更改为: res <- apply(params, 1, dTest)
if (log) return(log(res)) else return(res)
source("my_dtriangle.R")
重新定义工作区中的功能可以想象,您将使用具有紧凑支持的功能(即,在限制范围的值之外的零可能性)遇到进一步的技术问题。