我是一位更熟悉R的用户,并且一直在尝试针对5个生境针对四个栖息地变量在5年内估计约35个个体的随机斜率(选择系数)。响应变量是某个位置是“已使用”(1)还是“可用”(0)栖息地(下面的“使用”)。
我正在使用Windows 64位计算机。
在R版本3.1.0中,我使用下面的数据和表达式。PS,TH,RS和HW是固定效应(对生境类型的标准化测量距离)。lme4 V 1.1-7。
str(dat)
'data.frame': 359756 obs. of 7 variables:
$ use : num 1 1 1 1 1 1 1 1 1 1 ...
$ Year : Factor w/ 5 levels "1","2","3","4",..: 4 4 4 4 4 4 4 4 3 4 ...
$ ID : num 306 306 306 306 306 306 306 306 162 306 ...
$ PS: num -0.32 -0.317 -0.317 -0.318 -0.317 ...
$ TH: num -0.211 -0.211 -0.211 -0.213 -0.22 ...
$ RS: num -0.337 -0.337 -0.337 -0.337 -0.337 ...
$ HW: num -0.0258 -0.19 -0.19 -0.19 -0.4561 ...
glmer(use ~ PS + TH + RS + HW +
(1 + PS + TH + RS + HW |ID/Year),
family = binomial, data = dat, control=glmerControl(optimizer="bobyqa"))
glmer为我提供了对我有意义的固定效应的参数估计,并且当我定性研究数据时,随机斜率(我将其解释为每种栖息地类型的选择系数)也很有意义。该模型的对数可能性为-3050.8。
但是,大多数动物生态学研究都没有使用R,因为使用动物位置数据,空间自相关可以使标准误差易于产生I型误差。尽管R使用基于模型的标准误差,但经验(标准误差也包括胡贝尔白色或夹心)是首选。
尽管R当前不提供此选项(据我所知-请纠正,如果我错了,请纠正我),SAS可以-尽管我无法使用SAS,但一位同事同意让我借用他的计算机以确定是否出现标准错误。当使用经验方法时,变化很大。
首先,我们希望确保在使用基于模型的标准错误时,SAS会产生与R相似的估计值,以确保在两个程序中都以相同的方式指定了模型。我不在乎它们是否完全相同-只是相似。我尝试过(SAS V 9.2):
proc glimmix data=dat method=laplace;
class year id;
model use = PS TH RS HW / dist=bin solution ddfm=betwithin;
random intercept PS TH RS HW / subject = year(id) solution type=UN;
run;title;
我还尝试了其他各种形式,例如添加行
random intercept / subject = year(id) solution type=UN;
random intercept PS TH RS HW / subject = id solution type=UN;
我尝试不指定
solution type = UN,
或注释掉
ddfm=betwithin;
无论我们如何指定模型(我们已经尝试了许多方法),即使固定效果足够相似,我也无法获得SAS中的随机斜率来远程模拟R的输出。当我指的是不同的时候,我的意思是甚至标志都不相同。SAS中的-2对数似然率为71344.94。
我无法上传完整的数据集;所以我只用三个人的记录制作了一个玩具数据集。SAS在几分钟内给了我输出;在R中需要一个多小时。奇怪的。有了这个玩具数据集,我现在对固定效果有了不同的估计。
我的问题:谁能阐明为什么R和SAS之间的随机斜率估计值可能会如此不同?我可以在R或SAS中做些什么来修改我的代码,以使调用产生相似的结果?我宁愿更改SAS中的代码,因为我“相信”我的R估计更多。
我真的很关心这些差异,并希望深入探讨此问题!
我从玩具数据集中仅使用R和SAS完整数据集中35个个体中的三个个体的输出作为jpeg包含在内。
编辑和更新:
正如@JakeWestfall帮助发现的那样,SAS中的坡度不包括固定效果。当我添加固定效果时,得出的结果是-在程序之间比较R斜率和SAS斜率以获得一个固定效果“ PS” :(选择系数=随机斜率)。请注意,SAS中变化的增加。
0
s和1
s的二项式数据R
将对“ 1”响应的概率进行建模,而SAS将对“ 0”响应的概率进行建模。为了使SAS模型的概率为“ 1”,您需要将响应变量写为use(event='1')
。当然,即使不这样做,我相信我们仍然应该期望随机效应方差的相同估计以及固定效应估计相同,尽管其符号相反。
ranef()
函数而不是将R与SAS中的随机效应进行比较coef()
。前者给出了实际的随机效应,而后者给出了随机效应加上固定效应向量。因此,这解释了为什么您的帖子中显示的数字有所不同的很多原因,但是仍然存在很大的差异,我无法完全解释。
ID
不是R中的因素;检查,看看是否有任何改变。