0

我正在使用 R 中的 rethinking 包来制作一个简单的线性模型。在下面的代码中,我对因变量使用了先验正态分布,一切正常。

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) )
4

1 回答 1

1

因为dtriangle分布没有log像 R/by 中的概率分布函数所期望的那样包含参数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")重新定义工作区中的功能

可以想象,使用具有紧凑支持的函数(即,在受限值范围之外的可能性为零)时,您会遇到更多技术问题

于 2017-11-24T16:42:17.963 回答