SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 4379|回复: 15
打印 上一主题 下一主题

临床试验的SAS统计报表问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2005-7-12 10:44:04 | 只看该作者

临床试验的SAS统计报表问题

[color=red:f7563][b:f7563][size=150:f7563]临床试验的SAS统计报表问题
collen[/size:f7563][/b:f7563][/color:f7563]

一般而言,SAS的输出结果要经过编辑才能成为符合统计学要求的统计图表,而制作统计报告的工作量极大,编辑过程也很易出错。如何利用SAS直接产生用户要求格式的统计报告,是值得研究的问题。

为规范临床试验数据管理 ,简化程序并减少数据统计分析过程中的错误来源 ,有必要研究 SAS中的宏问题,来很好地解决这个问题。

以下参考文献是统计学家的一些探索:

定性指标的sas统计分析报表―sas软件在新药临床试验统计分析中的应用(一)
童新元 . 张高魁 . 姚晨.  中国卫生统计    2003年01期   


正态分布定量指标统计分析报表的sas宏程序
邹建东. 熊宁宁. 卜擎燕. 蒋萌. 刘芳.  中国临床药理学与治疗学    2004年07期   


新药临床试验中协方差分析的sas统计报表
童新元. 张高魁. 姚晨.  中国临床药理学与治疗学    2004年08期   


新药临床试验中定量指标的sas统计报表
童新元. 张高魁. 姚晨.  军医进修学院学报    2005年01期   


应用sas软件的动态数据交换技术自动生成统计报告
田晓燕. 金丕焕. 张文彤.  中华预防医学杂志    2005年01期   


四格表指标统计分析报表的sas宏程序
邹建东. 熊宁宁. 卜擎燕. 蒋萌. 刘芳.  中国临床药理学与治疗学    2005年03期  


SAS统计报表制作的一般过程

1、先设计好你的报表格式,比如
________________________________________________
指标              试验组     对照组  统计量  P值
________________________________________________
年龄   

例数(缺失)
均值(方差)
中位数
最小值~最大值
95%置信限
________________________________________________



当然这些不用你在word中手工绘制好,就是在报表之前应该清楚大致的形式。



2、用SAS过程先初步得到这些结果

比如可以用means过程、univariate过程得到一些描述统计量;


可以用means过程后面加选项t来做t成组检验,可以用ttest过程来做成组或配对t检验。


而t检验的前途条件要求数据服从正态分布,如果不服从正态分布可以用非参数检验。


3、利用SAS的ODS中ods select选择你所需要的结果

可以先用ods trace来看一下输出的结果都有哪些,然后用ods select选择结果到相应的数据集中。


4、为了直接输出得到上面的表格,可以有两种方法来做。

一种是ODS;一种是利用put在结果输出窗口得到它,再粘贴到word中。


[b:f7563]举例:四格表指标统计分析报表的sas宏程序[/b:f7563]

[code:f7563]
%macro chisq (database= ,var= ,varfmt=,index=) ;

/* 利用freq 程序输出描述性结果到TabFreq 数据集*/
proc freq data = &database. noprint ;
tables &var. * group /out = TabFreq ;
run ;

/* 将两对比组的缺失例数分别输出到独立的数据集ma 和mb 中*/
data ma ( where = (group ="A") ) mb ( where= (group ="B") ) ;
set TabFreq (keep = &var. group COUNT) ;
where &var. = . ;
run ;

/* 利用ODS 输出描述性结果到CrossTabFreqs数据集,
对比统计的结果到数据集chisq,FishersExact */
ods listing close ;
ods output CrossTabFreqs = CrossTabFreqs chisq = chisq FishersExact=FishersExact ;
proc freq data = &database. ;
tables &var. * group /chisq exact expected nopercent norow ;
run ;
ods listing ;

/* 自CrossTabFreqs 数据集中生成理论频数的数据集,并将其排序 */
proc sort out = EXPECTED(keep = EXPECTED)
data = CrossTabFreqs ( where = ( EXPECTED not=. ) ) ;
by Expected ;
run ;

/* 自理论频数数据集中取出最大理论频数值,输出到数据集T中 */
data T(keep = T) ;
set EXPECTED ;
if n = 1 then T = EXPECTED ;
if T = . then delete ;
run ;

/* 自CrossTabFreqs 数据集中生成例数的数据集,并将其排序 */
proc sort out = Frequency ( keep = Frequency)
data = CrossTabFreqs ;
by descending Frequency ;
run ;

/* 自例数数据集中取出例数,输出到数据集n中 */
data n (keep = n) ;
set Frequency ;
if n = 1 then n = Frequency ;
if n = . then delete ;run ;
run ;

/* 自chisq 数据集中生成普通卡方检验的统计量和P值的数据库 */
data chisq1 (keep =value1 Prob1 ) ;
set chisq ( rename = (value = value1 Prob =Prob1) ) ;
where (Statistic = ('Chi-Square') | Statistic = ('卡方') ) ;
run ;

/* 自chisq 数据集中生成连续校正卡方检验的统计量和P值的数据库 */
data chisq2 (keep =value2 Prob2 ) ;
set chisq ( rename = (value = value2 Prob =Prob2) ) ;
where ( Statistic = ( 'Continuity Adj. Chi-Square') | Statistic = ('连续校正卡方') ) ;
run ;

/* 自Fishersexact 数据集中生成精确概率法P值的数据库 */
data Fishersexact (keep = cvalue1) ;
set Fishersexact ;
where (Name1 = ('XP2_FISH') ) ;
run ;

/* 合并结果,并定义统计量格式 */
data st (keep = ma mb n T value1 Prob1 value2 Prob2 cvalue1 &var. c) ;
merge ma ( rename = (COUNT = ma) ) mb ( rename = (COUNT = mb) ) n T chisq1 chisq2 Fishersexact ;
&var. = - 99 ;
if ma = . then ma = 0 ;
if mb = . then mb = 0 ;
format value1 6.2 value2 6.2 ;
run ;

data outa ( where = ( group ="A") ) outb (where = (group ="B") ) ;
set CrossTabFreqs ;
format ColPercent 6.2 ;
run ;

data outt (drop = table group _TYPE_ _TABLE_ Expected Missing) ;
merge outa (rename = ( Frequency = A ColPercent = percentA) )
outb ( rename = ( Frequency = B ColPercent =percentB) ) ;
if &var. = . then &var. = - 99 ;
run ;

proc sort ;by &var. ;run ;

data _null_ ;
file print notitle ;
merge outt st ;
if &var. = - 99 then do ;
if n < 40 or T < 1 or 0.0450 < Prob1 < 0.0550 then do ;
put @3 "&index." @70 '精确概率法' @83 'P= ' cvalue1 ;
end ;
else if n > = 40 and 1 < = T < = 5 then do ;
put @3 "&index. " @70 '校正chisq = 'value2  @83 'P= 'Prob2 ;
end ;
else if n > = 40 and T > = 5 then do ;
put @3"&index. " @70 'chisq = 'value1  @83 'P= 'Prob1 ;
end ;
put @5 "例数(缺失) " @22 A  '(' MA ') ' @47 B  '(' MB ') ';
end ;
else do ;
put @5 &var. '(%) ' @22 A  '(' PercentA ') '@47 B '('PercentB ') ';
format &var. &varfmt..;
end ;
run ;

proc datasets;
delete chisq chisq1 chisq2 Crosstabfreqs Expected Fishersexact
Frequency Ma Mb N Outa Outb Outt st stt t Tabfreq ; quit ;

%mend chisq ;

data jixian;
input id   group$    SEX;
datalines;
1    A     1
2    A     2
3    A     2
4    A     2
5    B     1
6    B     2
7    B     1
8    B     2
;
run;

proc format;
value sexfmt 1='男性' 2='女性';
run;

%chisq (database=jixian ,var=sex ,varfmt=sexfmt,index=性别) [/code:f7563]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2005-8-1 09:42:57 | 只看该作者

大侠

非常钦佩你
能否底下交流?
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2005-8-1 10:13:30 | 只看该作者

@

公开也无妨,这些东西没有什么秘密和价值.

我们论坛马上计划成立相应的板块,到时候欢迎你多多发言讨论.
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2005-8-7 11:45:59 | 只看该作者

期盼

期盼这一天的到来
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2005-10-1 09:55:15 | 只看该作者

佩服

[color=red:49424]太佩服了,thank you very much![/color:49424]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2006-2-22 20:11:41 | 只看该作者

R

我在SAS9.0中运行没有通过
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
7#
 楼主| 发表于 2006-8-27 18:00:04 | 只看该作者

回复

我在SAS9.0中运行通过,是不错的一个例子,值得好好研究。能否将计量资料的报表格式也贴上来,非常感谢
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2006-9-18 18:10:02 | 只看该作者

回复

在下非常钦佩Collen,能否请教将临床试验中ITT集和PP集作于同一张表格的宏程序(定量指标)也贴上来,我研究了好长时间,由于水平有限,未能完成。能得到Collen的帮助我非常荣幸。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2006-9-19 09:22:13 | 只看该作者

to fxf258

本论坛中此前曾有人给出过不同研究中心的宏程序,只需要正确的将PP集ITT集即可。本人正在研究这段程序,成功后将和大家分享。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2006-9-19 09:26:14 | 只看该作者

to collen

利用上述宏程序自然可以生成我们需要的表格,但并非是真正的表格形式,其实质仍然是文本形式,这样在后期的排版、编辑过程中将会非常麻烦,不知哪位高人可以对其加以优化?(我知道用矩阵完全可以实现同样的效果,而且是真正的表格形式,但我未能研究成功)
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-4 05:18 , Processed in 0.075238 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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