问题类似于以下帖子中的问题:
" troubles converting proc nlmixed (SAS) to nlme (R) "
答案 0 :(得分:2)
这根本不像混合模型 - 随机效应是什么?它看起来像一个略微不寻常的广义线性模型:我认为这样做。
glm((1-p)~d1+d2+d3+d4-1,family=binomial(link="log"))
(你必须自己翻转参数的标志)。
Tiwari et al. 2006适合此类型的模型。
R等价物:
dd <- read.table("sas_vals.txt",header=TRUE,na.string=".")
g1 <- glm((1-Y)~d1+d2+d3+d4-1,family=binomial(link="log"),data=dd,
start=rep(-0.1,4))
这有点困难,可能部分是因为微小的数据集(我假设这是真实数据的一个子集 - 将21个二进制观察拟合4个参数将是一个非常糟糕的想法......)
或者:
library("bbmle")
g2 <- mle2(Y~dbinom(prob=1-exp(-p),size=1),
parameters=list(p~d1+d2+d3+d4-1),
start=list(p=0.1),
data=dd)
对数似然性表明mle2
拟合更好,并且重新设置glm
与这些起始值的拟合效果更好:
g3 <- update(g1,start=-coef(g2))
g4 <- mle2(Y~dbinom(prob=1-(exp(-p)^exp(b*Treat)),size=1),
parameters=list(p~d1+d2+d3+d4-1),
start=list(p=0.1,b=0),
data=dd)
summary(g4)
## Estimate Std. Error z value Pr(z)
## p.d1 0.106163 0.088805 1.1955 0.2319
## p.d2 0.241029 0.178263 1.3521 0.1763
## p.d3 0.105970 0.113455 0.9340 0.3503
## p.d4 0.179232 0.189951 0.9436 0.3454
## b 0.559624 0.740500 0.7557 0.4498
这似乎与SAS的结果非常吻合。