Я рассмотрел ряд документов, в каждом из которых сообщалось о наблюдаемом среднем значении и SD измерения в соответствующей выборке известного размера, . Я хочу высказать наиболее вероятное предположение о вероятном распределении той же меры в новом исследовании, которое я проектирую, и о том, насколько неопределенны эти предположения. Я счастлив предположить, что ).n X ∼ N ( μ , σ 2
Моей первой мыслью был метаанализ, но в моделях обычно использовались точечные оценки и соответствующие доверительные интервалы. Тем не менее, я хочу сказать кое-что о полном распределении , которое в этом случае также включало бы предположение о дисперсии, .
Я читал о возможных байейсовских подходах к оценке полного набора параметров данного распределения в свете предшествующих знаний. Как правило, это имеет больше смысла для меня, но у меня нет опыта байесовского анализа. Это также кажется простой, относительно простой проблемой, чтобы порезаться.
1) Учитывая мою проблему, какой подход имеет больше всего смысла и почему? Метаанализ или байесовский подход?
2) Если вы считаете, что байесовский подход является лучшим, можете ли вы указать мне способ реализации этого (предпочтительно в R)?
правок:
Я пытался разобраться в этом, как мне кажется, в «простой» байесовской манере.
Как я уже говорил выше, меня интересует не только среднее значение , но и дисперсия в свете предшествующей информации, т.е.
Опять же, я ничего не знаю о Байянизме на практике, но это не заняло много времени, чтобы обнаружить, что апостериор нормального распределения с неизвестным средним и дисперсией имеет решение в замкнутой форме через сопряжение , с нормальным распределением обратной гаммы.
Проблема переформулируется как .
оценивается с нормальным распределением; с обратным гамма-распределением.
Мне потребовалось некоторое время, чтобы обдумать это, но по этим ссылкам ( 1 , 2 ) я смог, я думаю, разобраться, как это сделать в R.
Я начал с фрейма данных, составленного из строки для каждого из 33 исследований / выборок, и столбцов для среднего значения, дисперсии и размера выборки. Я использовал среднее значение, дисперсию и размер выборки из первого исследования в строке 1 в качестве моей предварительной информации. Затем я обновил это с информацией из следующего исследования, вычислил соответствующие параметры и отобрал из нормальной-обратной гаммы, чтобы получить распределение и . Это повторяется до тех пор, пока не будут включены все 33 исследования.σ 2
# 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)
Вот схема пути, показывающая, как и изменяются при добавлении каждого нового образца.E ( σ 2 )
Здесь приведены значения, основанные на выборке из оценочных распределений для среднего значения и дисперсии при каждом обновлении.
Я просто хотел добавить это на случай, если это будет полезно для кого-то другого, и чтобы знающие люди могли сказать мне, было ли это разумным, ошибочным и т. Д.