
精密度实验变异系数计算的SAS宏程序讲解.doc
7页精选优质文档-----倾情为你奉上精密度实验变异系数计算的SAS宏程序 【摘要】 评价医院实验室检测结果的准确性和稳定性,需要进行精密度实验,以确定检测结果是否处于所控制的范围内通过计算精密度实验批内、批间、天间以及总的变异系数,能够反映实验仪器精密度好坏通过编写SAS宏程序,可以应用SAS统计软件直接输出以上变异系数的统计报表 【关键词】 精密度实验; 变异系数; 统计分析报表; SAS宏程序 1 精密度实验 评价医院实验室检测结果的准确性和稳定性,需要进行精密度评价实验,以确定检测结果是否处于所控制的范围内精密度实验通常包括批内、批间以及日间重复实验对同一批次质控标本的重复测定,要求每天在不同时间点测定同一批次质控标本2次(2次测定间隔不得少于2小时),为批内重复实验;每次测定均做不同批次质控标本双份,为批间重复实验;一般要求连续测定20天,为天间重复实验,这是对检测系统天间不精密度的观察 对精密度实验结果进行统计分析,反映实验仪器精密度好坏的指标是变异系数(CV)CV越小精密度越好,反之则差,故也称其为不精密度通常按以下公式可以计算出批内、批间、天间和总CV,其中总CV最重要,它代表整个分析体系的可重复程度。
S批内=?ni=1 ?2j=1 (Xij1-Xij2)24n 式中:S批内为批内标准差;n为实验天数(n=20);i为第i天(1~20);j为1天内的批数(1或2);xij1为第i天第j批的第1个结果;xij2为第i天第j批的第2个结果 A=?ni=1 (Xi1-Xi2)22n 式中: A为批间差异水平;Xi1为第i天第1批的结果均数;Xi2为第i天第2批的结果均数 B=?ni=1 (i-)2n-1 式中:B为天间差异水平;i为第i天的结果均数;为所有实验结果均数 S总=2B2+A2+S2批内2 式中:S总为总标准差 CV总=S总/ 式中:CV总为总变异系数;S总为总标准差;为所有实验结果均数 2 编写SAS宏程序 为直接得到如表1所示统计分析报表,编写以下SAS宏程序数据集名为&database,统计变量为&var,其中第1批2次测定数据结果分别为&var.1和&var.2,第2批2次测定数据结果分别为&var.3和&var.4,输出总变异系数的数据集名为&dataout。
表1 精密度试验变异系数统计分析(略) 2.1 定义输出表的格式 %macro tformat; /*定义宏,输出统计报表的格式*/ proc format; invalue g 1=20 2=40; %mend tformat; 2.2 计算变异系数 调用proc univariate过程计算批内标准差s、批间差异水平a、天间差异水平b和所有实验结果均数x,利用公式计算出总的变异系数CV %macro cv(database,var,dataout); /*定义sas宏程序cv*/ data data1; set &database(keep=&var.1 &var.2 &var.3 &var.4); d1=(&var.1-&var.2)**2+(&var.3-&var.4)**2; proc univariate normal noprint; var d1; output out=d1 sum=sum n=n; data s; set d1; s=sqrt(sum/(4*n)); /*取平方根值,得到批内标准差s*/ run; data data2; set &database(keep=&var.1 &var.2 &var.3 &var.4); d2=((&var.1+&var.2)/2-(&var.3+&var.4)/2)**2; proc univariate normal noprint; var d2; output out=d2 sum=sum n=n; data a; set d2; a=sqrt(sum/(2*n)); /*取平方根值,得到批间差异水平a*/ run; data data3; set &database(keep=&var.1 &var.2 &var.3 &var.4); d3=(&var.1+&var.2+&var.3+&var.4)/4; proc univariate normal noprint; var d3; output out=b std=b mean=x; /*生成天间差异水平b和所有实验结果均数x*/ run; data cv; merge s(keep=s) a(keep=a) b(keep=b x); cv=sqrt((2*(b**2)+a**2+s**2)/2)/x; run; data &dataout; set cv(keep=s a b cv) nobs=nobs; /*合并数据集,其中包含s,a,b*/ nu=nobs; s=100*s; /*由于变异系数通常用百分数表示,因此,将所得到的值乘以100*/ a=100*a; b=100*b; cv=100*cv; run; proc datasets; delete data1 data2 data3 d1 d2 s a b cv; /*删除程序中生成的临时数据集*/ quit; %mend cv; 2.3 定义输出结果的位置 定义宏FC,输出批内标准差s、批间差异水平a、天间差异水平b和总的变异系数CV的位置。
%macro fc(invar,cvar,p); if &invar then do; if inds=1 then do; row+&p; put #row @4 "&cvar" @22 s 6.2 '%' @34 a 6.2 '%' @50 b 5.2 '%' @64 cv 5.2 '%' #(row+1) @2 75*'-'; end; if inds=1 then inds=0; end; %mend fc; 定义宏nullset,产生一个输出表,集成已产生的批内标准差s、批间差异水平a、天间差异水平b和总的变异系数CV,并按定义排列将输出表存入d盘sas目录下,文件名为&tab的文本文件,&tab为宏变量 %macro nullset(data); data _null_; file "d:\sas\&tab..txt" print n=ps notitles header=head; set &data; inds+1; col=input(g,g.); %mend nullset; 2.4 运行宏程序 将以上SAS程序提交SAS系统运行,即可自动生成统计分析表1。
其中数据集名为main,变量名分别为high、mid、low %let tab=表1; /*将宏变量&tab赋值为表1,即生成的文件名为:表1.txt*/ %tformat; %cv(main,high,fhigh); %cv(main,mid,fmid); %cv(main,low,flow); %nullset(fhigh(in=fhigh) fmid(in=fmid) flow(in=flow)); %fc(fhigh,全血高切粘度值,2); %fc(fmid,全血中切粘度值,2); %fc(flow,全血低切粘度值,2); 2.5 其他辅助程序 /*定义输出表的表头*/ return; head: put # 2 @10 "&tab 精密度试验变异系数统计分析" # 3 @2 75*'-' # 4 @6 '检测指标' @20 '批内变异系数' @34 '批间变异系数' @48 '天间变异系数' @62 '总变异系数' # 5 @2 75*'-'; row=6; return; run; /*将d:\sas\&tab..txt文件在PGM窗口输出*/ %macro dminc( ); Dm"inc'd:\sas\&tab..txt'"; run; %mend dminc; %dminc; 3 讨论 精密度实验是医院实验室进行质量控制经常采用的方法,其数据统计分析较多采用Excel2000等软件进行,对批内、批间变异系数计算比较方便容易,但对总变异系数的计算往往比较困难,而且常常需要人为转抄为word文档,容易出现错误。
SAS统计分析软件是当前国际上最流行、并具有权威性的统计分析软件,目前在我国临床药物研究领域应用较为广泛我们通过编制SAS宏程序,直接由SAS系统计算得到总变异系数,并输出简明的统计分析报表,减少了人为转抄产生的错误,保证结果的真实准确性对于精密度实验其他检测指标的统计分析,只需要在SAS宏程序中对变量名进行相应的修改,就能够方便地得到统计表,减少分析处理时间参考文献】 1 高慧璇,李贵斌,耿直,主编.SAS系统Base SAS软件使用手册.北京:中国统计出版社,2001. 2 董新元,张高魁,姚晨.新药临床试验中定量指标的SAS统计报表.军医进修学院学报,2005,26(1):71~72. 3 胡良平,主编.现代统计学与SAS应用.北京:军事医学科学出版社,2000.专心---专注---专业。
