来晚一步,不过,我还是很高兴为你再作进一步解答和更正一些我发现的错误:你原先提供的数据其形式R*C=(4*4),数据总和为16个,那么,如果你想要变形为R*C=(8*5),我觉得应该是8*5,8为行,就是行数或观察数,5为列数,就是等级数,所以,整个数据的总和就是40个,如果你病例的总数增加了,也就是变成如下表格:
年龄(岁)X 冠状动脉粥样硬化等级(Y) 合计
— + ++ +++ ++++
20- 70 22 4 2 1 99
30- 27 24 9 3 2 65
40- 16 23 13 7 5 64
50- 9 20 15 14 13 71
60- 8 14 13 15 18 68
70- 7 12 14 17 20 70
80- 6 11 13 19 18 67
>=90 5 10 12 18 20 65
合计 148 136 93 95 97 569
既然行列由4*4变成8*5,那当然原先的程序也就要改变成:
DATA abc;
DO x=1,2,3,4,5;
DO y=1,2,3,4,5,6,7,8;
INPUT f @@;
OUTPUT;
END;
END;
CARDS;
70 22 4 2 1
27 24 9 3 2
16 23 13 7 5
9 20 15 14 13
8 14 13 15 18
7 12 14 17 20
6 11 13 19 18
5 10 12 18 20
;
后面的统计程序计算不变:
PROC FREQ data=abc;
WEIGHT f;
TABLES x*y / CHISQ;*但在这里发现了一个问题,这里应该是x*y,而不是y*x,否则,打出的表格是竖着列的,与实际表格不符了;
RUN;
PROC REG data=abc;
FREQ f;
MODEL y=x;
RUN;
quit;
但分析结果肯定就不一样了:
r=4; *r 就是row行,加入新数据后,将变为8;
c=4;*c就是column列,加入新数据后,将变为5;
kf=71.4325;*kf就是卡方值(chi-square value),加入新数据后,将变为221.3211,算得的卡方值有常用的卡方值,还有一个叫Likelihood Ratio Chi-Square,这取决于你想用哪个更接近你的需要来定了,CHISQ-R是不是指Chi-Square Ratio(比率),CHISQ-B是不是指Chi-Square Bias(偏差);
b=0.40534;*b就是x的估计值(parameter estimate),加入新数据后,将变为0.32687;
sb=0.04479;*sb就是x的标准误(standard error),加入新数据后,将变成0.02167;
最后一段的sas程序就是将统计结果读入到sas数据表内,以打印出结果而已。
DATA a;
r=8;*27楼在添加新数据之后,没有改变此数;
c=5;*27楼在添加新数据之后,没有改变此数;
kf=221.3211;*27楼在添加新数据之后,没有改变此数;
b=0.32687;*27楼在添加新数据之后,没有改变此数;
sb=0.02167;*27楼在添加新数据之后,没有改变此数;
dff=(r-1)*(c-1);
dfr=1;
dfb=dff-dfr;
vb=sb*sb;
kr=ROUND(b*b/vb, 0.001);
kb=kf-kr;
pr=1-PROBCHI(kr,dfr);
pr=ROUND(pr, 0.0001);
IF pr<0.0001 THEN pr=0.0001;
pb=1-PROBCHI(kb,dfb);
pb=ROUND(pb, 0.0001);
IF pb<0.0001 THEN pb=0.0001;
FILE PRINT;
PUT #2 @10 'CHISQ-R' @20 'P-R'
#2 @30 'CHISQ-B' @40 'P-B'
#3 @10 kr @20 pr
#3 @30 kb @40 pb;
proc print data=a;RUN;
即使病例总数不变,但我想因为各年龄组及硬化等级改变了,一定会影响到统计计算分析的结果,其相应的分析数据当然也会改变。你不妨可以将总数固定,各年龄组和各等级内的病例数改变一下,再重新运算一下结果验证一下。
你的悬赏很诱人!不知道我是否还可以领到你的悬赏币?你还有何问题,我很愿意帮你解答!
|