saihuatuo

  •  
  • 2021年2月15日
  • 注册于 2006年10月29日
  • 各位朋友:
    我采用R中的JAGS包重要一本书的数据分析(用WINGBUGS进行分析没有问题),但提示“Index out of range taking subset of y”,请高手指正。
    代码如下:

    set.seed(123)
    library(R2jags)
    cat("model{
      for (i in 1:r){
        for(j in n+1:n[i+1])
        {
          y[j,1:mminus1+1] ~ dmulti(p[j,], ni[j])
          p[j,1] <- Q[j,1]
          for (k in 2:mminus1) {
            p[j,k] <- Q[j,k] - Q[j,k-1] }
          p[j,mminus1+1]<- 1 - Q[j,mminus1]
          for (k in 1:mminus1) {
            logit(Q[j,k]) <- a[i,k] + gamma1*x[j] }
        }
        gamma1 ~ dnorm(beta1, t)
        a[i,1] ~ dnorm(0,1.0E-4)I(, a[i,2])
        a[i,2] ~ dnorm(0,1.0E-4)I(a[i,1], a[i,3])
        a[i,3] ~ dnorm(0,1.0E-4)I(a[i,2], a[i,4])
        a[i,4] ~ dnorm(0,1.0E-4)I(a[i,3], ) }
      beta1 ~ dnorm(0,1.0E-4)
      t ~ dgamma(0.001,0.001)
      tau.sq <- 1/t
    }",file="ordermodel.txt")
    
    ##data
    data=list(r=5,mminus1 = 4, n = c(0,2,4,6,8,10),
    x=c(1,0,1,0,1,0,1,0,1,0),
    y=structure(.Data=c(4,2,14,1,13,7,21,8,3,2,
    23,22,119,22,20,16,106,24,14,13,
    45,54,180,35,24,17,175,73,19,18,
    22,29,54,11,10,10,62,52,3,7,
    2,3,6,3,1,3,17,10,0,1),.Dim=c(10,5)),
    ni=c(96,110,373,72,68,53,381,170,39,41))
    
    #fitting model
    
    paras=c("beta1","tau.sq")
    res=jags(data=data,inits=NULL,paras,model.file = "ordermodel.txt")
    summary(res)
    
    
    

    ##结果
    module glm loaded
    Compiling model graph
    Resolving undeclared variables
    Deleting model
    Error in jags.model(model.file, data = data, inits = init.values, n.chains = n.chains, :
    RUNTIME ERROR:
    Compilation error on line 6.
    Index out of range taking subset of y

    查了半天,知道哪里的问题,请各位高手指点一下,多谢!

  • 谢谢版主。数据含义如下:



    r表示研究,r=5表示有5个研究



    在每个研究中,

    x表示干预方式,其中1代表治疗组,0代表对照组

    y代表治疗效果,分为5个等级,分别用y1-y5表示,数字表示某一等级病例数

    NI表示每一组的总人数。



    1.winbug code如果有错误的话,是不是在模型检测这一步就不能通过?



    2.是不是数据输入方式不对?
  • [quote]引用第1楼dingpeng于2009-12-08 20:51发表的  :

    for(j in n+1:n[i+1])-----------这行什么意思?

    n是一个向量,for的上届有问题吧?

    [/quote]

    谢谢版主的回复,我发原书的模型和CODE请您看一下,到底是什么问题。
  • 下面的程序是从一本收拷贝过来的:

    model

    {

    for (i in 1:r)

    {

    for(j in n+1:n[i+1])

    {

    y[j, 1:mminus1+1] ~ dmulti(p[j,], ni[j])

    p[j,1] <- Q[j,1]

    for (k in 2:mminus1)

    {

    p[j,k] <- Q[j,k] - Q[j,k-1]

    }

    p[j,mminus1+1]<- 1 - Q[j,mminus1]

    for (k in 1:mminus1)

    {

    logit(Q[j,k]) <- a[i,k] + gamma1*x1[j]

    }

    }

    gamma1 ~ dnorm(beta1, t)

    a[i,1] ~ dnorm(0,1.0E-4)I(, a[i,2])

    a[i,2] ~ dnorm(0,1.0E-4)I(a[i,1], a[i,3])

    a[i,3] ~ dnorm(0,1.0E-4)I(a[i,2], a[i,4])

    a[i,4] ~ dnorm(0,1.0E-4)I(a[i,3], )

    }

    beta1 ~ dnorm(0,1.0E-4)

    t ~ dgamma(0.001,0.001)

    tausq <- 1/t

    }



    数据是按按求输入的:list(r=5, mminus1=4, n=c(0,2,4,6,8,10))

    x1[] y[ ,1] y[ , 2] y[ ,3] y[ ,4] y[ ,5] ni[]

    1 4 23 45 22 2 96

    0 2 22 54 29 3 110

    1 14 119 180 54 6 373

    0 1 22 35 11 3 72

    1 13 20 24 10 1 68

    0 7 16 17 10 3 53

    1 21 106 175 62 17 381

    0 8 24 73 52 13 170

    1 3 14 19 3 0 39

    0 2 13 18 7 1 41

    END



    但在用winbugs计算时,模型检查没问题,数据导入没问题,但在“compli”却出现问题,请各位高手看看到底有什么问题?谢谢
  • 现在的书也不少,请推荐一下,实用性较强的书.
  • 不看设计,单从数据来看,属于重复测量数据,不能用One-Way-ANOVA。应该采用重复测量数据的统计方法,SPSS和STATA等软件均可以实现。

    同意楼上的,实验设计比统计更重要,首先要清楚自己的设计!