He revisado un conjunto de papeles, cada uno de los informes de que el observado la media y la desviación estándar de la medición de X en sus respectivos muestra de tamaño conocido, n. Quiero hacer de la mejor manera posible adivinar acerca de las probabilidades de la distribución de la misma medida en un nuevo estudio que estoy diseñando, y cuánto la incertidumbre está en que adivinar. Estoy feliz de asumir X∼N(μ,σ2).
Mi primer pensamiento fue el meta-análisis, pero los modelos empleados típicamente se centran en las estimaciones puntuales y los correspondientes intervalos de confianza. Sin embargo, me gustaría decir algo acerca de la distribución completa de la X, que en este caso sería también incluida la formulación de una conjetura acerca de la variación, σ2.
He estado leyendo acerca de los posibles Bayeisan enfoques para calcular el conjunto completo de parámetros de una distribución dada, a la luz de los conocimientos previos. Generalmente, esto tiene más sentido para mí, pero tengo cero experiencia con el análisis Bayesiano. Esto también parece un sencillo, relativamente simple problema para cortar mis dientes.
1) Dada mi problema, el enfoque que tiene más sentido y por qué? Meta-análisis o un enfoque Bayesiano?
2) Si usted piensa que el enfoque Bayesiano es el mejor, puede que me apunte a una forma de implementar este (preferiblemente en R)?
Una pregunta relacionada con la
EDICIONES:
He estado tratando de resolver esto en lo que yo creo que es un 'simple' Bayesiano manera.
Como he dicho anteriormente, no solo estoy interesado en la estimación de la media, μ, pero también la varianza,σ2, habida cuenta del estado de la información, es decir, P(μ,σ2|Y)
De nuevo, yo no sé nada acerca de Bayeianism en la práctica, pero no pasó mucho tiempo para encontrar que la parte posterior de una distribución normal con desconocidos media y la varianza tiene una forma cerrada de la solución a través de conjugacy, con la normal inverso de distribución gamma.
El problema es formulado como P(μ,σ2|Y)=P(μ|σ2,Y)P(σ2|Y).
P(μ|σ2,Y) se estima con una distribución normal; P(σ2|Y) con un inversa-distribución gamma.
Me tomó un tiempo para conseguir mi cabeza alrededor de ella, pero a partir de estos enlaces(1, 2) que era capaz de, creo, para ordenar cómo hacer esto en R.
Empecé con una estructura de datos compuesta de una fila para cada uno de los 33 estudios/muestras y columnas para la media, la varianza y el tamaño de la muestra. He utilizado la media, la varianza y el tamaño de la muestra del primer estudio, en la fila 1, como mi información previa. He actualizado esto con la información de la siguiente estudio, se calculan los parámetros pertinentes, y se tomaron muestras de la normal inverso-gamma para obtener la distribución de los μσ2. Esto se repite hasta que todos 33 los estudios han sido incluidos.
# Loop start values values
i <- 2
k <- 1
# Results go here
muL <- list() # mean of the estimated mean distribution
varL <- list() # variance of the estimated mean distribution
nL <- list() # sample size
eVarL <- list() # mean of the estimated variance distribution
distL <- list() # sampling 10k times from the mean and variance distributions
# Priors, taken from the study in row 1 of the data frame
muPrior <- bayesDf[1, 14] # Starting mean
nPrior <- bayesDf[1, 10] # Starting sample size
varPrior <- bayesDf[1, 16]^2 # Starting variance
for (i in 2:nrow(bayesDf)){
# "New" Data, Sufficient Statistics needed for parameter estimation
muSamp <- bayesDf[i, 14] # mean
nSamp <- bayesDf[i, 10] # sample size
sumSqSamp <- bayesDf[i, 16]^2*(nSamp-1) # sum of squares (variance * (n-1))
# Posteriors
nPost <- nPrior + nSamp
muPost <- (nPrior * muPrior + nSamp * muSamp) / (nPost)
sPost <- (nPrior * varPrior) +
sumSqSamp +
((nPrior * nSamp) / (nPost)) * ((muSamp - muPrior)^2)
varPost <- sPost/nPost
bPost <- (nPrior * varPrior) +
sumSqSamp +
(nPrior * nSamp / (nPost)) * ((muPrior - muSamp)^2)
# Update
muPrior <- muPost
nPrior <- nPost
varPrior <- varPost
# Store
muL[[i]] <- muPost
varL[[i]] <- varPost
nL[[i]] <- nPost
eVarL[[i]] <- (bPost/2) / ((nPost/2) - 1)
# Sample
muDistL <- list()
varDistL <- list()
for (j in 1:10000){
varDistL[[j]] <- 1/rgamma(1, nPost/2, bPost/2)
v <- 1/rgamma(1, nPost/2, bPost/2)
muDistL[[j]] <- rnorm(1, muPost, v/nPost)
}
# Store
varDist <- do.call(rbind, varDistL)
muDist <- do.call(rbind, muDistL)
dist <- as.data.frame(cbind(varDist, muDist))
distL[[k]] <- dist
# Advance
k <- k+1
i <- i+1
}
var <- do.call(rbind, varL)
mu <- do.call(rbind, muL)
n <- do.call(rbind, nL)
eVar <- do.call(rbind, eVarL)
normsDf <- as.data.frame(cbind(mu, var, eVar, n))
colnames(seDf) <- c("mu", "var", "evar", "n")
normsDf$order <- c(1:33)
Aquí es un camino en el diagrama que muestra cómo las E(μ) E(σ2) cambiar a medida que cada nueva muestra, se añade.
Aquí están las desnities basa en el muestreo de las estimaciones de las distribuciones de la media y la varianza en cada actualización.
Yo sólo quería añadir en este caso, es útil para alguien, y para que la gente en-el-saber me puede decir si esto era sensato, fallas, etc.