首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jags遍历(子集)

使用jags遍历(子集)
EN

Stack Overflow用户
提问于 2016-09-06 05:16:31
回答 1查看 589关注 0票数 1

我有一个10000行12列的大型数据帧(discountdataset)。这些列包含不同的变量。前210行表示主题1(还有一列带有"subject1"),接下来的210行表示主题2,依此类推。

我想使用jags和一个循环函数来遍历数据帧中的所有52个主题,并为每个主题分配一个函数。我的代码如下所示:

代码语言:javascript
复制
#subsetting the dataframe by the variable subjectid
subsetdiscount <- split(discountdataset, as.factor(discountdataset$subjectid))

在这里,我的计划是循环并将以下jags函数分配给子集中的所有主题),但是,它不起作用。我想我的错误是我想要传递给jags的变量"nt", "Choice"没有正确定义,或者没有更新。

代码语言:javascript
复制
library(rjags)

for (i in 1:length(subsetdiscount))
{

nt <- nrow (subsetdiscount)
Choice <- subsetdiscount$choice
amountSS <- subsetdiscount$val_basic
amountLL <- subsetdiscount$val_d
delayDIFF <- subsetdiscount$delay
con <- subsetdiscount$condition


data <- list("nt", "Choice", "amountSS", "amountLL", "delayDIFF", "con") #      to be passed on to JAGS

myinits <- list(
list(k = (c(0.01, 0.01))),
list(temp = (c(6, 6))))


parameters <- c("k", "temp")


samples <- jags(data, inits=myinits, parameters,
             model.file ="singlesubmodel_Ben_roundedchoice.txt", n.chains=2,         n.iter=20000, 
     n.burnin=1, n.thin=1, DIC=T)
EN

回答 1

Stack Overflow用户

发布于 2016-09-06 22:19:26

尝试:

代码语言:javascript
复制
library(rjags)
library(R2jags)

subsetdiscount <- split(discountdataset, as.factor(discountdataset$subjectid))

output_models <- lapply(subsetdiscount, function(x) {
  nt <- nrow(x)
  Choice <- x$choice
  amountSS <- x$val_basic
  amountLL <- x$val_d
  delayDIFF <- x$delay
  con <- x$condition
  data <- list("nt", "Choice", "amountSS", "amountLL", "delayDIFF", "con") #      to be passed on to JAGS
  myinits <- list(list(k = (c(0.01, 0.01))),
    list(temp = (c(6, 6))))
  parameters <- c("k", "temp")
  samples <- jags(data, inits=myinits, parameters,
                  model.file ="singlesubmodel_Ben_roundedchoice.txt", 
                  n.chains=2, n.iter=20000, 
                  n.burnin=1, n.thin=1, DIC=T)
  return(samples)
})

output_models应该是一个列表,其中包含拆分主数据集所依据的每个因子的输出。请注意,如果没有任何提供的数据,测试这一点是相当困难的。因此,如果这不起作用,您可能需要提供一些数据用于测试。

我希望它能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39337786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档