Когда я запускаю свой код 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)