Bayesian

結合來自多項研究的信息來估計正態分佈數據的均值和方差 - 貝葉斯與元分析方法

  • January 5, 2014

我審查了一組論文,每篇論文都報告了測量的觀測平均值和 SD在其各自已知大小的樣本中,. 我想對我正在設計的一項新研究中相同度量的可能分佈做出最好的猜測,以及該猜測中有多少不確定性。我很高興假設)。

我的第一個想法是元分析,但模型通常採用的重點是點估計和相應的置信區間。但是,我想說一下關於,在這種情況下還包括對方差進行猜測,.

我一直在閱讀有關根據先驗知識估計給定分佈的完整參數集的可能的 Bayeisan 方法。這通常對我來說更有意義,但我對貝葉斯分析的經驗為零。這似乎也是一個直截了當、相對簡單的問題。

1)鑑於我的問題,哪種方法最有意義,為什麼?元分析還是貝葉斯方法?

2)如果您認為貝葉斯方法是最好的,您能否指出一種實現方法(最好在 R 中)?

相關問題

編輯:

我一直在嘗試以我認為是“簡單”的貝葉斯方式來解決這個問題。

正如我上面所說,我不僅對估計的平均值感興趣,,還有方差,,根據先驗信息,即

同樣,我在實踐中對貝葉斯主義一無所知,但很快就發現具有未知均值和方差的正態分佈的後驗通過conjugacy具有封閉形式的解,具有正態逆伽馬分佈。

問題被重新表述為.

用正態分佈估計;具有逆伽馬分佈。

我花了一段時間才弄清楚它,但是從這些鏈接(1、2 中,我認為我能夠對如何在 R 中執行此操作進行排序。

我從一個數據框開始,該數據框由 33 個研究/樣本中的每一個組成的一行,以及均值、方差和样本大小的列組成。我使用第 1 行中第一項研究的均值、方差和样本量作為我的先驗信息。然後我用下一個研究的信息更新了這個,計算了相關參數,並從正態逆伽馬中採樣得到分佈和. 這會重複,直到所有 33 項研究都被包括在內。

# 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)

這是一個路徑圖,顯示瞭如何和隨著每個新樣本的添加而改變。

在此處輸入圖像描述

以下是基於每次更新時均值和方差的估計分佈的抽樣得出的密度。

在此處輸入圖像描述

在此處輸入圖像描述

我只是想添加它以防它對其他人有幫助,以便知情人士告訴我這是否明智,有缺陷等。

這兩種方法(元分析和貝葉斯更新)並沒有那麼明顯。元分析模型實際上通常被構建為貝葉斯模型,因為將證據添加到關於手頭現象的先驗知識(可能非常模糊)的想法很自然地適用於元分析。描述這種連接的文章是:

蒙大拿州布蘭尼克 (2001)。經驗貝葉斯薈萃分析對測試驗證的影響。應用心理學雜誌,86(3),468-480。

(作者使用相關性作為薈萃分析的結果度量,但無論度量如何,原理都是相同的)。

一篇關於元分析貝葉斯方法的更一般的文章是:

Sutton, AJ 和 Abrams, KR (2001)。元分析和證據綜合中的貝葉斯方法。醫學研究中的統計方法,10(4),277-303。

您似乎所追求的(除了一些綜合估計之外)是一個預測/可信度區間,它描述了未來研究中真實結果/效果可能下降的位置。可以從“傳統”元分析或貝葉斯元分析模型中獲得這樣的區間。例如,在以下內容中描述了傳統方法:

Riley, RD, Higgins, JP 和 Deeks, JJ (2011)。解釋隨機效應薈萃分析。英國醫學雜誌,342,d549。

在貝葉斯模型的背景下(例如,Sutton & Abrams,2001 年的論文中方程 6 所描述的隨機效應模型),可以很容易地獲得, 在哪裡是真實的結果/效果th 研究(由於這些模型通常使用 MCMC 進行估計,因此只需要監控鏈經過適當的老化期後)。從該後驗分佈,可以得到可信區間。

引用自:https://stats.stackexchange.com/questions/81282

comments powered by Disqus