【发布时间】:2016-04-22 13:59:44
【问题描述】:
我在将 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 函数的相关参数来做到这一点。但如果我错了,请纠正我。
提前致谢。
【问题讨论】:
-
它需要一些分组的数据框作为输入。尝试
lme(mpg ~ wt, data = mtcars)也会给出同样的错误。当您查看帮助页面中的示例并执行class(Orthodont)时,您会发现它不是一个直接的数据框。