SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 878|回复: 3
打印 上一主题 下一主题

如何进行多分类应变量的Logistic回归分析

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2005-10-31 06:40:56 | 只看该作者

如何进行多分类应变量的Logistic回归分析

请问如何进行多分类应变量的Logistic回归分析?

在应变量是有序变量的情况下,是否能赋值y为0,1,2,3,4...

谢谢
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2005-11-4 10:27:03 | 只看该作者

可以这样赋值

如果因变量是多值变量,可以得到多个模型进行分析
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2005-11-4 18:53:39 | 只看该作者

谢谢

谢谢你的指点

第一、按照你的意思,也就是:如果应变量为等级变量,不能赋值Y为0,1,2, 3......了。

第二、能否详细介绍你的方法。

谢谢。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2005-11-11 00:13:13 | 只看该作者

Re

最好是用proc rank……将其设置成哑变量后再分析,下面给出一段宏程序,可以一次对多个变量进行哑变量的设置,请各位指教。
[code:c4c45]%MACRO ranks(data,outdata=,var=,num=,byvar=,indicator=F);
options nodate nonumber;title;
%if &outdata= %then %do; %let outdata=&data; %end;
%local nqvar nqnum nq i j;
%let nqvar = %wordcnt(string=&var, delim=%str( ));
%let nqnum = %wordcnt(string=&num, delim=%str( ));
%if &nqvar>1 & &nqnum>1 & &nqvar^=&nqnum %then %do;
   %put ERROR: qvar, qnum not matching; endsas;
%end;
%if &nqvar=1 %then %do;%let nq = &nqnum;
  %do i=1 %to &nq;%let qvar&i = &var;%let qnum&i = %scan(&num, &i);%end;
%end;
%if &nqvar>1 %then %do; %let nq = &nqvar;
  %if &nqnum=1 %then %do;
    %do i=1 %to &nq;%let qnum&i = #%let qvar&i = %scan(&var, &i);%end;
  %end;
  %else %if &nqnum>1 %then %do;
   %do i=1 %to &nq;  
     %let qvar&i = %scan(&var, &i);%let qnum&i = %scan(&num, &i);
   %end;
  %end;
%end;  %*if &nqvar>1;
%if &byvar^= %then %do;proc sort data=&data; by &byvar;%end;
%do i=1 %to &nq;
  proc rank data=&data(keep=&byvar &&qvar&i) out=_out&i groups=&&qnum&i;
   var &&qvar&i; ranks &&qvar&i.&&qnum&i ;
   %if &byvar^= %then %do;by &byvar;%end;run;

   %if &byvar^= %then %do;proc sort data=_out&i;by &byvar;%end;
   proc univariate data=_out&i noprint;
     var &&qvar&i; class &&qvar&i.&&qnum&i;
     %if &byvar^= %then %do;by &byvar;%end;
     output out=_tmp1 n=n mean=mean std=std pctlpts=0 50 100 pctlpre=x;
   run;

   data _out&i; set _out&i; _tmpid=_n_;
   proc sort; by &byvar &&qvar&i.&&qnum&i;
   data _out&i; merge _out&i _tmp1(keep=&byvar &&qvar&i.&&qnum&i x50);
     by &byvar &&qvar&i.&&qnum&i;
     rename x50=&&qvar&i.&&qnum&i.._m;
   proc sort data=_out&i;by _tmpid;
   data _tmp1;set _tmp1;
     rank_var="&&qvar&i";rank=&&qvar&i.&&qnum&i;
     min=x0; median=x50; max=x100;
     keep rank_var rank n median min max mean std &byvar;run;
   %if &i=1 %then %do; data _tmpp;set _tmp1;run;%end;
   %else %do;data _tmpp;set _tmpp _tmp1;run;%end;
%end;
proc print data=_tmpp noobs;
  var &byvar rank_var rank n median min max mean std;run;   
data &outdata; merge &data %do i=1 %to &nq; _out&i %end;;drop _tmpid;
  %if &indicator=T %then %do;
    %do i=1 %to &nq;
     %do j=1 %to &&qnum&i;
       &&qvar&i.&&qnum&i..&j = (&&qvar&i.&&qnum&i=(&j-1));
     %end;
    %end;
  %end;
run;
%MEND ranks;
%MACRO ranks(aa,outdata=aaa,var=x1 x2 x3,num=2 2 2,byvar=sex,indicator=F);[/code:c4c45]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2025-6-9 07:00 , Processed in 0.095562 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表