将SAS代码转换为R代码

时间:2015-02-13 13:54:48

标签: r model

我一直试图转换计算简单回归和混合模型的SAS代码。我已经实现了转换简单回归,但是当谈到混合模型时,我的试验变成了失败。下面说明的SAS代码是我尝试转换的代码

“parc”“m”“dap”“ht”分别是数据集的标题实验。

data algoritmo ;
input parc m dap ht ;
lnH = LOG(ht-1.3);
lnD = LOG(dap) ;
cards ;
8   1   24.3    26.7
8   1   29.9    30.7
8   1   32.6    31.7
8   1   35.9    33.7
8   1   36.5    32.5
22  2   22.3    21.0
22  2   26.9    23.1
22  2   26.9    20.5
22  2   32.4    21.5
22  2   33.5    25.0
85  3   33.6    33.5
85  3   36.0    33.0
85  3   37.0    35.0
85  3   40.8    35.0

;
run ;

/* Simpre Regression Model */
PROC REG DATA=algoritmo ;
model lnH = lnD ;
output out=out p=pred ;
run ; quit ;

/* Mixed-Effects Model */
PROC MIXED DATA=algoritmo COVTEST METHOD=REML  ;
TITLE ' lnH = (B0+bok)+(B1+b1k)*lnd ' ;
MODEL lnH = lnD / S OUTPM=outpm OUTP=outp ;
RANDOM intercept lnD /SUBJECT=m s G TYPE=UN ;
RUN ;

这是我转换的代码部分。这部分代码对我来说非常适合。

data1= read.table(file.choose(), header=T, sep=",")
attach(data1)
lnH=log(ht-1.3)
lnD =log(dap)
data2 = cbind(data1,lnH, lnD)
#Simple Linear Model
model1 = lm(lnH~lnD,data=data2)
summary(model1)

但其余的我都被困住了。

model2 = lme(lnH~lnD ,data=data2,random=~1|lnD / m, method= "REML",  weights=varPower(0.2,form=~dap))
summary(model2)

1 个答案:

答案 0 :(得分:2)

在Roland的帮助下,将random=~1|lnD替换为random=~lnD|m效果非常好。