将proc nlmixed(SAS)转换为nlme(R)的麻烦

时间:2012-06-22 11:12:02

标签: r

我想将SAS代码从proc nlmixed转换为R.我想我需要使用nlme,但我遇到了麻烦。 R不想运行此代码并给出错误:“解析时出错(text = paste(”〜“,paste(nVal,collapse =”/“))):: 2:0:意外的输入结束”。

我真的不知道我正在运行的是正确的还是我做错了什么。谁能告诉我我的代码有什么问题?我的模型陈述在R中是否正确? R是否在修复声明列表中遇到麻烦?

非常感谢!!

SAS proc nlmixed code:

proc nlmixed data=parests2;
parms   theta2=0 b2=1
        theta3=0 b3=1;
eta1=0;
eta2=theta2+b2*p2;
eta3=theta3+b3*p3;
ARRAY exp_eta{3};
ARRAY estprobs{3};
exp_eta1=1;exp_eta2=exp(eta2);exp_eta3=exp(eta3);
bot=exp_eta1+exp_eta2+exp_eta3;
estprobs1=exp_eta{1}/bot;estprobs2=exp_eta{2}/bot;estprobs3=exp_eta{3}/bot;
p_outcome=exp_eta{outcome}/bot;
ll=log(p_outcome);
model outcome~GENERAL(ll);
run;

我转换为R: (d1,d2和d3是虚拟变量,表示结果是第一类,第二类还是第三类)

nlme(outcome~d1*(1/(1+exp(theta2+b2*p2)+exp(theta3+b3*p3)))+d2*(exp(theta2+b2*p2)/(1+exp(theta2+b2*p2)+exp(theta3+b3*p3)))+(1-d1-d2)*(exp(theta3+b3*p3)/(1+exp(theta2+b2*p2)+exp(theta3+b3*p3))),
fixed=list(theta2~1,b2~1,theta3~1,b3~1),start=c(theta2=0,b2=1,theta3=0,b3=1),
data=test,method="ML")

0 个答案:

没有答案