楼主: mrwh18
2502 18

[原创博文] 请教一个sas计算的问题 [推广有奖]

11
liuliqingdong 发表于 2012-9-28 11:35:18
抱歉,那个命令错了一个字母。请用如下命令。

title"Computation of min sample size for test of fit";
data one;
rmsea0=.05;*null hyp rmsea;
rmseaa=.08;*alt hyp rmsea;
d=15;*degrees of freedom;
alpha=.05;*alpha level;
powd=.80;*desired power;
*initialize values;
powa=0.0;
n=0;
*begin loop for finding initial level of n;
do until (powa>powd);
n+100;
ncp0=(n-1)*d*rmsea0**2;
ncpa=(n-1)*d*rmseaa**2;
*compute power;
if rmsea0>rmseaa then do;
cval=cinv(alpha,d,ncp0);
powa=probchi(cval,d,ncpa);
end;
if rmsea0<rmseaa then do;
cval=cinv(1-alpha,d,ncp0);
powa=1-probchi(cval,d,ncpa);
end;
end;
*begin loop for interval halving;
dir=-1;
newn=n;
intv=200;
powdiff=powa-powd;
do until(powdiff<.001);
intv=intv*.5;
*compute new power;
ncp0=(newn-1)*d*rmsea0**2;
ncpa=(newn-1)*d*rmseaa**2;
*compute power;
if rmsea0>rmseaa then do;
cval=cinv(alpha,d,ncp0);
powa=probchi(cval,d,ncpa);
end;
if rmsea0<rmseaa then do;
cval=cinv(1-alpha,d,ncp0);
powa=1-probchi(cval,d,ncpa);
end;
powdiff=abs(powa-powd);
if powa<powd then dir=1;else dir=-1;
end;
minn=newn;
output;
proc print data=one;
var rmsea0 rmseaa powd alpha d minn powa; run;

12
sunset1986 发表于 2012-9-28 12:03:32
liuliqingdong 发表于 2012-9-28 11:35
抱歉,那个命令错了一个字母。请用如下命令。

title"Computation of min sample size for test of fit"; ...
还是没有run statement
An honest tale speeds best being plainly told.
Cheers!

13
sunset1986 发表于 2012-9-28 12:15:18
liuliqingdong 发表于 2012-9-28 11:35
抱歉,那个命令错了一个字母。请用如下命令。

title"Computation of min sample size for test of fit"; ...
另外,如果run得位置如下:
title"Computation of min sample size for test of fit";
data one;
rmsea0=.05;*null hyp rmsea;
rmseaa=.08;*alt hyp rmsea;
d=15;*degrees of freedom;
alpha=.05;*alpha level;
powd=.80;*desired power;
*initialize values;
powa=0.0;
n=0;
*begin loop for finding initial level of n;
do until (powa>powd);
n+100;
ncp0=(n-1)*d*rmsea0**2;
ncpa=(n-1)*d*rmseaa**2;
*compute power;
if rmsea0>rmseaa then do;
cval=cinv(alpha,d,ncp0);
powa=probchi(cval,d,ncpa);
end;
if rmsea0<rmseaa then do;
cval=cinv(1-alpha,d,ncp0);
powa=1-probchi(cval,d,ncpa);
end;
end;
*begin loop for interval halving;
dir=-1;
newn=n;
intv=200;
powdiff=powa-powd;
do until(powdiff<.001);
intv=intv*.5;
*compute new power;
ncp0=(newn-1)*d*rmsea0**2;
ncpa=(newn-1)*d*rmseaa**2;
*compute power;
if rmsea0>rmseaa then do;
cval=cinv(alpha,d,ncp0);
powa=probchi(cval,d,ncpa);
end;
if rmsea0<rmseaa then do;
cval=cinv(1-alpha,d,ncp0);
powa=1-probchi(cval,d,ncpa);
end;
powdiff=abs(powa-powd);
if powa<powd then dir=1;else dir=-1;
end;
minn=newn;
output;
run;

不好意思,公司的电脑很久没有给出答复,可能数据计算量太大
An honest tale speeds best being plainly told.
Cheers!

14
liuliqingdong 发表于 2012-9-28 12:23:22
sunset1986 发表于 2012-9-28 12:15
另外,如果run得位置如下:
title"Computation of min sample size for test of fit";
data one;
没关系。我刚刚下载了SAS,我再试试。不过还是非常感谢你。

15
sunset1986 发表于 2012-9-28 12:30:14
liuliqingdong 发表于 2012-9-28 12:23
没关系。我刚刚下载了SAS,我再试试。不过还是非常感谢你。
别客气,多交流~
您这个是在作哪方面的分析呢?
An honest tale speeds best being plainly told.
Cheers!

16
liuliqingdong 发表于 2012-9-28 12:31:52
主要是有关SEM中,power analysis和sample size estimation相关的分析。目前一个project需要用到这个。你是哪个行业或领域的。我是psychology的。

17
FB_FLORA 发表于 2012-9-28 16:03:33
data test;
input acct $ date amount;
cards;
10001 201201 130
10001 201201 140
10001 201301 124
10002 201201 130
10002 201201 120
        ;
run;
proc sql;
create table chk as
select distinct acct , sum(amount) as amount
from test
group by acct
;
quit;

18
sunset1986 发表于 2012-9-29 08:56:48
liuliqingdong 发表于 2012-9-28 12:31
主要是有关SEM中,power analysis和sample size estimation相关的分析。目前一个project需要用到这个。你是 ...
我是做金融风险分析的~ 呵呵
An honest tale speeds best being plainly told.
Cheers!

19
kittyforever 发表于 2013-1-17 16:33:06
用sql, group by语句

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 21:40