2

我的数据集是关于点球的,包含 106 行,特征是:

  • 踢球方向
  • 球员的脚劲
  • HomeAway 告诉我们玩家是在他的城镇还是在客场比赛

我想对这些数据执行多项逻辑回归,以便根据其他两个数据建立一个踢球方向的模型。我以 Aligator BUGS 为例:http ://www.openbugs.net/Examples/Aligators.html

我的 BUGS 文件如下:

    model
{

# PRIORS
   alpha[1] <- 0; # zero contrast for baseline food
   for (k in 2 : K) {
      alpha[k] ~ dnorm(0, 0.00001) # vague priors
   }
# Loop around Foot:
   for (k in 1 : K){
      beta[1, k] <- 0
   } # corner-point contrast with first foot
   for (i in 2 : I) {
      beta[i, 1] <- 0 ; # zero contrast for baseline foot
      for (k in 2 : K){
         beta[i, k] ~ dnorm(0, 0.00001) # vague priors
      }
   }
# Loop around Time:
   for (k in 1 : K){
      gamma[1, k] <- 0 # corner-point contrast with first Time
   }
   for (j in 2 : J) {
      gamma[j, 1] <- 0 ; # zero contrast for baseline Time
      for ( k in 2 : K){
         gamma[j, k] ~ dnorm(0, 0.00001) # vague priors
      }
   }

# LIKELIHOOD   
   for (i in 1 : I) { # loop around Foot
      for (j in 1 : J) { # loop around Time

        # Multinomial response
         X[i,j,1 : K] ~ dmulti( p[i, j, 1 : K] , n[i, j] )
         n[i, j] <- sum(X[i, j, ])
         for (k in 1 : K) { # loop around Kick_Direction
            p[i, j, k] <- phi[i, j, k] / sum(phi[i, j, ])
            log(phi[i ,j, k]) <- alpha[k] + beta[i, k] + gamma[j, k]
            }
        }
    }
}

我使用 rjags 并出现以下错误:

Error in jags.model("kick_dir.bug", data, inits) : RUNTIME ERROR:
Possible directed cycle involving some or all
of the following nodes:
X[1,1,1:3]
X[1,2,1:3]
X[2,1,1:3]
X[2,2,1:3]
n[1,1]
n[1,2]
n[2,1]
n[2,2]

我做错了什么 ?

提前致谢

4

1 回答 1

0

我在分发方面遇到了类似的问题,dmulti因为通过设计以这种方式编码似乎很自然。

问题在于这两行:

X[i,j,1 : K] ~ dmulti( p[i, j, 1 : K] , n[i, j] )
n[i, j] <- sum(X[i, j, ])

JAGS 知道相同的变量X出现在表达式的 LHS 和 RHS 中,这在这个包中是被禁止的。

作为一种可能的解决方法,您可以作为datan[i, j]的一部分提供。

顺便说一下,STAN 中没有这样的问题,因为这些总和是自动计算的。

于 2020-10-31T18:37:44.513 回答