Ошибка: «не имеет значения для факторов» в R в следующем коде - PullRequest
0 голосов
/ 19 июня 2019

Когда я запускаю свой код R, я получаю сообщение об ошибке «не имеет значения для факторов» и не могу отладить, в чем проблема с кодом.

Когда я пытаюсь запустить только этот кусок кода, требуются возрасты, но когда я запускаю его на уценке R в целом, я получаю эту ошибку.

library(MCMCpack)
n<- 5
x <- c( 1.0,  1.5,  1.5,  1.5, 2.5)
y <- c(1.80, 1.85, 1.87, 1.77, 2.02)
iterations = 10000
alpha = rep(NA, iterations+1)
beta = rep(NA, iterations+1)
gamma = rep(NA, iterations+1)
tau_square = rep(NA, iterations+1)

# initial states for each parameter
alpha[1] = 2
beta[1] = 2
gamma[1] = 0.5
tau_square[1] = 0.1

# full conditional gamma
full_cond_gamma = function(gamma, alpha, beta, tau_square) {
  return(exp(-1/(2*tau_square)*sum((y-alpha+beta*gamma^x)^2)))
}

for(t in 1:iterations) {
  # update alpha Markov chain
  alpha[t+1] = rnorm(1,(10000*sum(y+beta[t]*gamma[t]^x))/(n*10000+tau_square[t]),
                     sqrt((tau_square[t]*10000)/(n*10000 + tau_square[t])))

  # update beta Markov chain
  beta[t+1] = rnorm(1,(10000*sum((alpha[t+1]-y)*gamma[t]^x)) / 
                      (10000*sum(gamma[t]^(2*x))+tau_square[t]),
                    sqrt((tau_square[t]*10000)/(10000*sum(gamma[t]^(2*x))+tau_square[t])))

  # MH to update gamma Markov chain
  proposal = runif(1,0,1) 
  prob = full_cond_gamma(proposal, alpha[t+1], beta[t+1], tau_square[t]) /
    full_cond_gamma(gamma[t], alpha[t+1], beta[t+1], tau_square[t]) 
  gamma[t+1] = ifelse(runif(1,0,1)<=prob, proposal, gamma[t])

  # update tau square markov chain
  tau_square[t+1] = rinvgamma(1, n/2 + 0.001, 
                              0.001+1/2*sum((y-alpha[t+1]+beta[t+1]*(gamma[t+1]^x))^2))

}
MG = cbind(alpha,beta, gamma, tau_square)
head(MG)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...