2017-08-21 728 views
4

我的變量是在一個隨機區塊上進行測量的,採用子採樣設計,其中我的治療是23 Accesion。我有3個完整的塊和每塊6個樣本。示例數據框包含4個響應變量(LH,REN,FTT,DFR),訪問(處理),Bloque(塊號)和Plot(即子採樣的變量)。數據的頭是:一般線性混合效應(glmer)異方差模型

Plot Accesion Bloque LH REN FTT DFR 
1 221  22  1 20.6 1127 23 88 
2 221  22  1 20.5 1638 20 88 
3 221  22  1 24.5 1319 16 88 
4 221  22  1 21.4 960 17 88 
5 221  22  1 25.7 1469 18 88 
6 221  22  1 25.8 1658 21 88 

因此,該數據是所有類型的轉換(日誌,boxcox,電源等)後,非正常和異方差幾乎所有的100個響應變量。大多數變量顯示每個Accesion具有不同方差的卡方或泊松樣分佈。

Histogram for FTT

到目前爲止,我beeng上運行的廣義線性與泊松使用的FTT的glmer()作爲響應變量模型效果的工作。我正在使用此代碼:

FTTglme = glmer(FTT ~ Accesion + Bloque + (1|Plot), data = Lyc, 
family=poisson(link="identity")) 

根據shapiro.test(),殘差是非正常的。我認爲,這是因爲在殘差中觀察到異方差。正如Accesion殘差的箱線圖,顯示差異的區別:

Boxplot of Residuals by Accesion

的異方差是植物種羣之間的預期,但我知道它可以在裏面glme進行建模。我要補充,我已經研究的代碼是:

vf <- varIdent(form=~Accesion) 

FTTglme = glmer(FTT ~ Accesion + Bloque + (1|Plot), data = Lyc, 
family=poisson(link="identity"), weights = vf) 

我想不同的差異,以瞭解每個Accesion類別。不過,我不斷收到錯誤:

Error in model.frame.default(data = Lyc, weights = varIdent(form = ~Accesion), : 
    variable lengths differ (found for '(weights)') 

有誰知道如何計算方差的Accesions之間的glmer()裏面的區別是什麼?

任何其他建議來分析數據也是受歡迎的。

+0

(1)爲什麼一個身份鏈接? (2)你試圖混合'nlme'和'lme4'語法的權重:這是行不通的... –

+0

glmer得到了一個權重參數。什麼是正確的sintax? –

回答

1

我已經解決了這個問題。在glmer()中,權值參數對應於與原始長度相同長度的向量。爲了模擬我產生了偏差數據框的異方差:

VAR<-aggregate(Lyc[,6],by=list(Lyc$Accesion), var) 
colnames(VAR)<-c("Accesion", "Var") 

這產生一個數據幀處理/差異,它的頭是:

Accesion  Var 
1  22 4.369281 
2  23 16.251634 
3  24 13.911765 
4  25 15.404412 
5  26 15.895833 
6  27 44.838095 

然後,我創建一個新的數據幀合併兩個dataframes

Lyc2<-merge(VAR, Lyc, by="Accesion") 

而且正如我所看到的做錯了1次,需要使用逆方差,以糾正方差。

Lyc2$Var<-(1/Lyc2$Var) 

所有數據的步驟後,我運行代碼:

FTTglme = glmer(FTT ~ Accesion + Bloque + (1|Plot), data = Lyc2,  
family=poisson(link="log"), weights = Lyc2$Var) 

修復該問題方差:

Corrected variance residuals boxplot

+0

有利於您解決問題。這與估計每組的不同差異並不完全相同。 https://stackoverflow.com/questions/21409340/how-to-allow-for-factor-specific-variance-of-random-effect-in-lme給出了一個鏈接,但它對於你的例子並不是非常實用,因爲它需要爲每個組設置單獨的虛擬變量... –