Reading "Using SAS/IML to Generate Weighted Chi-Square Statistics"
来源:互联网 发布:淘宝如何避免同款 编辑:程序博客网 时间:2024/05/18 17:23
这篇文章逻辑性很强,脉络清晰,这样的思维能力就是所谓的逻辑了吧.
文章将计算加权卡方统计量分作12个小环节,具体如下:
1.设定矩阵
假设存在一药物作用的患者样本,它有K(1,2,...,K)个观测,两种(i,j)处理,,将所有观测数据写成矩阵形式,就可以得到一个K*2的矩阵
2.计数
要进行卡方统计量的计算,我们首先需要计算行计数和,进而来计算权重,行计数和公式为:
用iml语言可以表示为:ndot= n[,+];
3.比率估计
计算患者药物反应比率的点估计,因为有两种药物处理,所以存在两种处理对应的患者反应情况,再结合K个患者,所以该比率估计也是一个K*2的矩阵
该公式iml语言为:phat= x/n;
4.加权比率
计算每种处理患者反应的加权比率估计,在(3)计算的比率估计基础上考虑两种处理的权重,重新计算得到的比率就是加权估计比率
其数学表达为:
iml中表达为:pbar= (n#phat)[,+]/ndot;
5.权重的计算
我们知道标准的Cochran-Mantel-Haenszel的调和平均公式为:
这个公式比较复杂,可以分别计算分子分母的值,然后再进行除法运算,这样在条理可以很清楚看出:
wnum = n[,#]/ndot;
wden = wnum[+,];
w = wnum/wden;
6.每种处理考虑权重的比率估计,
需要区别的是,前面考虑的权重都是单独的观测,这里是对两种处理的进行加权比率估计,得到的结果应是一个1*2的矩阵.
数学表达式为:
iml表达为:pwt = (w#phat)[+,];
7.计算pwt 估计的方差,pwt方差的计算公式为:
iml中的计算代码为:varpwt = (w#w#phat#(1-phat)/n)[+,];
8.计算两种处理间比率差值,显然其差异为:
由于两种处理在矩阵中就是两列,所起该差值就是两列的差值,iml中计算可以简单的表达为:
deltahat = phat[,2] – phat[,1];
上式计算的差值是矩阵中对应原始的差值,还需要计算两组整体的比率差值:
iml中的表达为:deltawt = (w # deltahat) [+,];
9.计算(8)中估计的方差,我们有方差公式:
iml中写成:
vardeltai = (phat#(1-phat) / n ) [,+];
vardeltaw = (w # w # vardeltai ) [+,];
10.计算pwt的置信区间
数学表达;
iml表达:
pwtcil = pwt – 1.96 * sqrt(varpwt);
pwtciu = pwt + 1.96 * sqrt(varpwt);
11.计算deltawt的置信区间
数学表达:
iml表达:
delwcil = deltawt – 1.96* sqrt(vardeltaw);
delwciu = deltawt + 1.96* sqrt(vardeltaw);
12.两种处理的差异性的假设检验,计算卡方值
iml表达:
chictmp = ((n[,#] # deltahat) / ndot ) [+,];
chicnum = chictmp ** 2;
chicden = (n[,#] # pbar # (1-pbar) / ndot ) [+,];
chic2 = chicnum/chicden;
13计算P值
从服从卡方分布的卡方统计量很容易计算得到相应P值:
pchic2 = 1 – probchi(chic2, 1);
14.整理代码如下
data Matrix;input tx stratum x n;datalines;1 1 140 4501 2 50 1701 3 60 2002 1 180 4402 2 90 2002 3 60 180;run;%let alpha=0.05;proc iml; reset print; /* sent output to window */ use Matrix; /* specify dataset to read in */ read all var {x} into x1 where (tx = 1); /* define matrix x1 from var x*/ read all var {x} into x2 where (tx = 2); /* and same for matrix x2 */ read all var {n} into n1 where (tx = 1); /* likewise for matrix n1 */ read all var {n} into n2 where (tx = 2); /* finally, matrix n2 */ x = x1 || x2; /* Catenate x1 and x2 to get X */ n = n1 || n2; /* Catenate n1 and n2 to get N */ ndot = n[,+]; /* All statements below were */ phat = x/n; /* previously explained above */ pbar = (n#phat)[,+] / ndot; wnum = n[,#] / ndot; wden = wnum[+,]; w = wnum / wden; pwt = (w # phat)[+,]; varpwt = (w # w # phat # (1-phat) / n)[+,]; deltahat = phat[,2] – phat[,1]; deltawt = (w # deltahat) [+,]; vardeltai = (phat # (1-phat) / n ) [,+]; vardeltaw = (w # w # vardeltai ) [+,]; %let uppera = %sysevalf(1.0-&alpha/2); zdot5 = probit(&uppera); pwtcil = pwt - zdot5 * sqrt(varpwt); pwtciu = pwt + zdot5 * sqrt(varpwt); delwcil = deltawt - zdot5 * sqrt(vardeltaw); delwciu = deltawt + zdot5 * sqrt(vardeltaw); chictmp = ( (n[,#] # deltahat) / ndot ) [+,]; chicnum = chictmp ** 2; chicden = (n[,#] # pbar # (1-pbar) / ndot ) [+,]; chic2 = chicnum/chicden; pchic2 = 1 – probchi(chic2, 1);quit;
详见:<Using SAS/IML to Generate Weighted Chi-Square Statistics>
- Reading "Using SAS/IML to Generate Weighted Chi-Square Statistics"
- sas/iml矩阵算术
- Basic Statistics Using SAS Enterprise Guide: A Primer
- Chi Square Distance
- using tetgen to generate tetrahedra
- Applications of Chi-Square Tests
- SAS-Statistics Analysis System
- Using XML To Dynamically Generate GUI Elements
- ActionScript: How to generate UUID using Actionscript
- chi-square, chi-distribute与Guassian distribute近似
- JMP Start Statistics: A Guide to Statistics and Data Analysis Using Jmp, Fourth Edition
- 卡方检验(Chi square statistic)
- 卡方检验(Chi square statistic)
- 卡方检验(Chi square statistic)
- Tutorials for Chi-square Distribution 1
- Tutorials for Chi-square Distribution 2
- chi-square test或称卡方检验
- 卡方检验 Chi-square test
- vmware网络设置详解[图文]
- Linux 2.6如何加载模块及内核编译
- 虚拟机Vmware下 linux上网设置 (bridged NAT 方式) +图解
- java工作的一些小心得!
- IDC商应该如何发展
- Reading "Using SAS/IML to Generate Weighted Chi-Square Statistics"
- 理解VMWare的三种网络连接模式(bridged、NAT、host-only)
- 简单的用 Java Socket 编写的 HTTP 服务器应用,帮助学习HTTP协议
- 还有如此实现方法,没试用过,mouseEntered一个按钮的时候如何让他自动显示按钮的注释信息在一个小的注释框中??鼠标移走又小的注释框又自动消失??
- php读取动态页面生成静态html文件的方法
- SQLServer 数据库加锁的知识
- MPI常用命令
- 极限
- MSDN 关于锁的阐释