[英]Equivalent R script for repeated measures SAS script, nested design
我在將SAS腳本轉換為相應的R腳本時遇到問題。
該模型是基於處理( trt
)的響應( resp
)的重復測量分析,其中包含嵌套在處理中的圖( plot
)。
SAS代碼:
data data_set;
input trt $ plot time resp;
datalines;
Burn 1 1 27
Burn 1 9 25
Burn 1 12 18
Burn 1 15 21
Burn 2 1 5
Burn 2 9 15
Burn 2 12 10
Burn 2 15 12
...
Unburn 1 1 57
Unburn 1 9 46
Unburn 1 12 49
Unburn 1 15 51
Unburn 2 1 43
Unburn 2 9 59
Unburn 2 12 59
Unburn 2 15 60
proc mixed data = data_set;
class trt plot time;
model resp = trt time trt*time / ddfm = kr;
repeated time / subject = trt(plot) type = vc rcorr;
run;
嘗試了R代碼(從CSV文件加載數據集):
library(nlme)
data.set <- read.csv( "data_set.csv" )
data.set$plot <- factor( data.set$plot )
data.set$time <- factor( data.set$time )
model1 <- lme( resp ~ trt + time + trt:time, data = data.set, random = ~1 | plot )
這可行,但不是所需的模型。 我嘗試過的其他嘗試通常導致錯誤:
Error in getGroups.data.frame(dataMix, groups) :
invalid formula for groups
基本上我在這里雜草叢生...
問題1:如何在R中指定與SAS中已經指定的模型相同的模型?
問題2:我希望能夠更改協方差矩陣以復制SAS中完成的其他工作。 我相信我知道如何使用lme函數的相關參數來執行此操作。 但是,如果我錯了,請糾正我。
提前致謝。
從邏輯上講,R中模型的規范為:
model1 <- lme( resp ~ trt + time + trt:time, data = data.set, random = ~1 | trt:plot )
假設情節按照編碼嵌套在處理中,或者情節與處理之間存在相互作用。 但是,如果這樣指定,則會生成上述警告:
getGroups.data.frame(dataMix,groups)中的錯誤:組的公式無效
遇到的問題與使用這種交互作用引入的級別有關(我認為)。 不管確切的問題是什么,都可以通過創建組合的治療圖預測變量來解決該問題:
data.set$trtplot <- with( data.set, factor( paste( trt, plot, sep = "." ) ) )
然后執行如下分析:
model1 <- lme( resp ~ trt + time + trt:time, data = data.set, random = ~ 1 | trtplot )
為了完整起見,可以很容易地做到以下幾點,其中添加了每個預測變量以及交互:
model1 <- lme( resp ~ trt * time, data = data.set, random = ~ 1 | trtplot )
當指定了Compound Symmetry
(CS)協方差結構時,這與SAS
獲得的結果相匹配(盡管AIC標准是不同的-不確定原因)。 因此,與上面指定了Variance Components
(VC)協方差結構的SAS代碼略有不同,但這只是在SAS代碼中更改結構類型的問題。
至於比較不同的協方差結構,這似乎更具挑戰性。 我想研究的協方差結構是:
任何想法都將受到歡迎!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.