2014-10-07 73 views
6

我試圖在R.使用MCMCglmm包創建模型多項式模型MCMCglmm中的R

的數據的結構如下,其中對子,局竈性,其他都是隨機效應,predict1-2是預測變量,和響應1-5是結果變量,不同亞型的觀察到的行爲的捕獲#:

dyad focal other r present village resp1 resp2 resp3 resp4 resp5 
1 10101 14302 0.5 3  1  0  0  4  0  5 
2 10405 11301 0.0 5  0  0  0  1  0  1 
… 

所以只有一個結果(示教)的模型如下:

prior_overdisp_i <- list(R=list(V=diag(2),nu=0.08,fix=2), 
G=list(G1=list(V=1,nu=0.08), G2=list(V=1,nu=0.08), G3=list(V=1,nu=0.08), G4=list(V=1,nu=0.08))) 

m1 <- MCMCglmm(teaching ~ trait-1 + at.level(trait,1):r + at.level(trait,1):present, 
random= ~idh(at.level(trait,1)):focal + idh(at.level(trait,1)):other + 
idh(at.level(trait,1)):X + idh(at.level(trait,1)):village, 
rcov=~idh(trait):units, family = "zipoisson", prior=prior_overdisp_i, 
data = data, nitt = nitt.1, thin = 50, burnin = 15000, pr = TRUE, pl = TRUE, verbose = TRUE, DIC = TRUE) 

哈德菲爾德的課程筆記(第5章)給出了一個多項式模型的例子,該模型只使用一個單一的結果變量,3個級別(3種類型的綿羊角)。類似的處理可以在這裏找到:http://hlplab.wordpress.com/2009/05/07/multinomial-random-effects-models-in-r/這是不完全正確的,我在做什麼,但包含有用的背景信息。

另一參考文獻(Hadfield 2010)給出了一個多響應MCMCglmm的例子,它遵循相同的格式,但使用cbind()來預測響應向量,而不是單個結果。與多個響應同型號的應該是這樣的:

m1 <- MCMCglmm(cbind(resp1, resp2, resp3, resp4, resp5) ~ trait-1 + 
at.level(trait,1):r + at.level(trait,1):present, 
random= ~idh(at.level(trait,1)):focal + idh(at.level(trait,1)):other + 
idh(at.level(trait,1)):X + idh(at.level(trait,1)):village, 
rcov=~idh(trait):units, 
family = cbind("zipoisson","zipoisson","zipoisson","zipoisson","zipoisson"), 
prior=prior_overdisp_i, 
data = data, nitt = nitt.1, thin = 50, burnin = 15000, pr = TRUE, pl = TRUE, verbose = TRUE, DIC = TRUE) 

我有兩個方案規劃問題,在這裏:

  1. 如何指定一個以前這種模式?我查看了這篇文章中提到的材料,但無法弄清楚。

  2. 我已經運行一個類似的版本只有兩個響應變量,但我只得到一個斜坡 - 我認爲我應該得到不同的斜率爲每個resp變量。我錯在哪裏,或者我誤解了模型?

+0

你有沒有檢查'R = list(V = diag(2),nu = 0.08,fix = 2)中是否有'fix = 2''真的有意義?在我對MCMCglmm先前規範的理解中,'fix'應該像布爾值一樣讀取:'fix = 0'是不將方差固定爲'V'的默認值,'fix = 1'表示「將方差修正爲「V」的值。所以'fix = 2'(或類似的)imo根本就沒有意義。 (但他的課程103頁上沒有Hadfield使用這個規範:ftp://cran.r-project.org/pub/R/web/packages/MCMCglmm/vignettes/CourseNotes.pdf) – Qaswed 2016-11-28 16:53:23

+0

@Qaswed我回來了這些數據在幾年後再次看到這些模型。我的理解是,由於存在分類組件(預測零)和連續組件(預測非零值),所以「修復」組件與先前模型的哪一部分有關。這是專門針對zipoisson模型的,它們在技術上是多項式的。警告:我可能會感到困惑! – 2018-03-08 19:19:07

回答

6

回答我的第一個問題的基礎上,HLP職位,並從運動課/統計諮詢一些幫助:

# values for prior 
k <- 5 # originally: length(levels(dative$SemanticClass)), so k = # of outcomes for SemanticClass  aka categorical outcomes 
I <- diag(k-1) #should make matrix of 0's with diagonal of 1's, dimensions k-1 rows and k-1 columns 
J <- matrix(rep(1, (k-1)^2), c(k-1, k-1)) # should make k-1 x k-1 matrix of 1's 

而對於我的模型,使用multinomial5家庭和5個結果變量中,之前是:

prior = list(
      R = list(fix=1, V=0.5 * (I + J), n = 4), 
      G = list(
       G1 = list(V = diag(4), n = 4)) 

對於我的第二個問題,我需要一個交互項添加到該模型中固定效應:

m <- MCMCglmm(cbind(Resp1, Resp2...) ~ -1 + trait*predictorvariable, 
... 

結果給出響應變量的主效應和Response/Predictor交互的後驗估計值(預測變量對每個響應變量的影響)。