精密度实验变异系数计算的SAS宏程序讲解

  • 格式:doc
  • 大小:24.00 KB
  • 文档页数: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 g1=202=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.。