SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1384|回复: 0
打印 上一主题 下一主题

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

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-11-7 00:18:59 | 只看该作者

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

From crackman's blog on Baidu


               
                <p>一般而言,SAS的输出结果要经过编辑才能成为符合统计学要求的统计图表,而制作统计报告的工作量极大,编辑过程也很易出错。如何利用SAS直接产生用户要求格式的统计报告,是值得研究的问题。 <br>
<br>
为规范临床试验数据管理 ,简化程序并减少数据统计分析过程中的错误来源 ,有必要研究 SAS中的宏问题,来很好地解决这个问题。 <br>
<br>
以下参考文献是统计学家的一些探索: <br>
<br>
定性指标的sas统计分析报表&mdash;sas软件在新药临床试验统计分析中的应用(一) <br>
童新元 . 张高魁 . 姚晨. 中国卫生统计 2003年01期 <br>
<br>
<br>
正态分布定量指标统计分析报表的sas宏程序 <br>
邹建东. 熊宁宁. 卜擎燕. 蒋萌. 刘芳. 中国临床药理学与治疗学 2004年07期 <br>
<br>
<br>
新药临床试验中协方差分析的sas统计报表 <br>
童新元. 张高魁. 姚晨. 中国临床药理学与治疗学 2004年08期 <br>
<br>
<br>
新药临床试验中定量指标的sas统计报表 <br>
童新元. 张高魁. 姚晨. 军医进修学院学报 2005年01期 <br>
<br>
<br>
应用sas软件的动态数据交换技术自动生成统计报告 <br>
田晓燕. 金丕焕. 张文彤. 中华预防医学杂志 2005年01期 <br>
<br>
<br>
四格表指标统计分析报表的sas宏程序 <br>
邹建东. 熊宁宁. 卜擎燕. 蒋萌. 刘芳. 中国临床药理学与治疗学 2005年03期 <br>
<br>
<br>
SAS统计报表制作的一般过程 <br>
<br>
1、先设计好你的报表格式,比如 <br>
________________________________________________ <br>
指标 试验组 对照组 统计量 P值 <br>
________________________________________________ <br>
年龄 <br>
<br>
例数(缺失) <br>
均值(方差) <br>
中位数 <br>
最小值~最大值 <br>
95%置信限 <br>
________________________________________________ <br>
<br>
<br>
<br>
当然这些不用你在word中手工绘制好,就是在报表之前应该清楚大致的形式。 <br>
<br>
<br>
<br>
2、用SAS过程先初步得到这些结果 <br>
<br>
比如可以用means过程、univariate过程得到一些描述统计量; <br>
<br>
<br>
可以用means过程后面加选项t来做t成组检验,可以用ttest过程来做成组或配对t检验。 <br>
<br>
<br>
而t检验的前途条件要求数据服从正态分布,如果不服从正态分布可以用非参数检验。 <br>
<br>
<br>
3、利用SAS的ODS中ods select选择你所需要的结果 <br>
<br>
可以先用ods trace来看一下输出的结果都有哪些,然后用ods select选择结果到相应的数据集中。 <br>
<br>
<br>
4、为了直接输出得到上面的表格,可以有两种方法来做。 <br>
<br>
一种是ODS;一种是利用put在结果输出窗口得到它,再粘贴到word中。 <br>
<br>
<br>
举例:四格表指标统计分析报表的sas宏程序 <br>
<br>
代码: <br>
<br>
%macro chisq (database= ,var= ,varfmt=,index=) ; <br>
<br>
/* 利用freq 程序输出描述性结果到TabFreq 数据集*/ <br>
proc freq data = &amp;database. noprint ; <br>
tables &amp;var. * group /out = TabFreq ; <br>
run ; <br>
<br>
/* 将两对比组的缺失例数分别输出到独立的数据集ma 和mb 中*/ <br>
data ma ( where = (group =&quot;A&quot;) ) mb ( where= (group =&quot;B&quot;) ) ; <br>
set TabFreq (keep = &amp;var. group COUNT) ; <br>
where &amp;var. = . ; <br>
run ; <br>
<br>
/* 利用ODS 输出描述性结果到CrossTabFreqs数据集, <br>
对比统计的结果到数据集chisq,FishersExact */ <br>
ods listing close ; <br>
ods output CrossTabFreqs = CrossTabFreqs chisq = chisq FishersExact=FishersExact ; <br>
proc freq data = &amp;database. ; <br>
tables &amp;var. * group /chisq exact expected nopercent norow ; <br>
run ; <br>
ods listing ; <br>
<br>
/* 自CrossTabFreqs 数据集中生成理论频数的数据集,并将其排序 */ <br>
proc sort out = EXPECTED(keep = EXPECTED) <br>
data = CrossTabFreqs ( where = ( EXPECTED not=. ) ) ; <br>
by Expected ; <br>
run ; <br>
<br>
/* 自理论频数数据集中取出最大理论频数值,输出到数据集T中 */ <br>
data T(keep = T) ; <br>
set EXPECTED ; <br>
if n = 1 then T = EXPECTED ; <br>
if T = . then delete ; <br>
run ; <br>
<br>
/* 自CrossTabFreqs 数据集中生成例数的数据集,并将其排序 */ <br>
proc sort out = Frequency ( keep = Frequency) <br>
data = CrossTabFreqs ; <br>
by descending Frequency ; <br>
run ; <br>
<br>
/* 自例数数据集中取出例数,输出到数据集n中 */ <br>
data n (keep = n) ; <br>
set Frequency ; <br>
if n = 1 then n = Frequency ; <br>
if n = . then delete ;run ; <br>
run ; <br>
<br>
/* 自chisq 数据集中生成普通卡方检验的统计量和P值的数据库 */ <br>
data chisq1 (keep =value1 Prob1 ) ; <br>
set chisq ( rename = (value = value1 Prob =Prob1) ) ; <br>
where (Statistic = ('Chi-Square') | Statistic = ('卡方') ) ; <br>
run ; <br>
<br>
/* 自chisq 数据集中生成连续校正卡方检验的统计量和P值的数据库 */ <br>
data chisq2 (keep =value2 Prob2 ) ; <br>
set chisq ( rename = (value = value2 Prob =Prob2) ) ; <br>
where ( Statistic = ( 'Continuity Adj. Chi-Square') | Statistic = ('连续校正卡方') ) ; <br>
run ; <br>
<br>
/* 自Fishersexact 数据集中生成精确概率法P值的数据库 */ <br>
data Fishersexact (keep = cvalue1) ; <br>
set Fishersexact ; <br>
where (Name1 = ('XP2_FISH') ) ; <br>
run ; <br>
<br>
/* 合并结果,并定义统计量格式 */ <br>
data st (keep = ma mb n T value1 Prob1 value2 Prob2 cvalue1 &amp;var. c) ; <br>
merge ma ( rename = (COUNT = ma) ) mb ( rename = (COUNT = mb) ) n T chisq1 chisq2 Fishersexact ; <br>
&amp;var. = - 99 ; <br>
if ma = . then ma = 0 ; <br>
if mb = . then mb = 0 ; <br>
format value1 6.2 value2 6.2 ; <br>
run ; <br>
<br>
data outa ( where = ( group =&quot;A&quot;) ) outb (where = (group =&quot;B&quot;) ) ; <br>
set CrossTabFreqs ;</p>
<p>format ColPercent 6.2 ; <br>
run ; <br>
<br>
data outt (drop = table group _TYPE_ _TABLE_ Expected Missing) ; <br>
merge outa (rename = ( Frequency = A ColPercent = percentA) ) <br>
outb ( rename = ( Frequency = B ColPercent =percentB) ) ; <br>
if &amp;var. = . then &amp;var. = - 99 ; <br>
run ; <br>
<br>
proc sort ;by &amp;var. ;run ; <br>
<br>
data _null_ ; <br>
file print notitle ; <br>
merge outt st ; <br>
if &amp;var. = - 99 then do ; <br>
if n = 40 and 1 = 40 and T &gt; = 5 then do ; <br>
put @3&quot;&amp;index. &quot; @70 'chisq = 'value1 @83 'P= 'Prob1 ; <br>
end ; <br>
put @5 &quot;例数(缺失) &quot; @22 A '(' MA ') ' @47 B '(' MB ') '; <br>
end ; <br>
else do ; <br>
put @5 &amp;var. '(%) ' @22 A '(' PercentA ') '@47 B '('PercentB ') '; <br>
format &amp;var. &amp;varfmt..; <br>
end ; <br>
run ; <br>
<br>
proc datasets; <br>
delete chisq chisq1 chisq2 Crosstabfreqs Expected Fishersexact <br>
Frequency Ma Mb N Outa Outb Outt st stt t Tabfreq ; quit ; <br>
<br>
%mend chisq ; <br>
<br>
data jixian; <br>
input id group$ SEX; <br>
datalines; <br>
1 A 1 <br>
2 A 2 <br>
3 A 2 <br>
4 A 2 <br>
5 B 1 <br>
6 B 2 <br>
7 B 1 <br>
8 B 2 <br>
; <br>
run; <br>
<br>
proc format; <br>
value sexfmt 1='男性' 2='女性'; <br>
run; <br>
<br>
%chisq (database=jixian ,var=sex ,varfmt=sexfmt,index=性别)</p> <a href="http://hi.baidu.com/crack%5Fman/blog/item/1e0dde2e11a33c3dd62af167.html">阅读全文</a>
               
                <br/><b>类别:</b><a href="http://hi.baidu.com/crack%5Fman/blog/category/%D7%AA%D4%D8%CE%C4%D5%C2sas">转载文章sas</a>&nbsp;<a href="http://hi.baidu.com/crack%5Fman/blog/item/1e0dde2e11a33c3dd62af167.html#comment">查看评论</a>
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-3 16:37 , Processed in 0.066309 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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