SAS比较不同年龄段组间差异,卡方检验

SAS比较不同年龄段组间差异,卡方检验

医学的朋友写论文在对年龄进行差异性检验时,查了很多资料都是基于SPSS做的,这里用SAS实现一下。
用例子说明吧,下面是一个学医的朋友想复现的一张表,来自哪里我也不知道,好,看表。

《SAS比较不同年龄段组间差异,卡方检验》
表2中共4个年龄段,想比较两两年龄段之间的组间差异性,在SAS中一个proc freq 过程步就全部搞定啦!
先把数据导入一下:

data a;
	input count r$ c$;
	cards;
		184 A 0
		115 B 0
		51 C 0
		24 D 0
		1809 A 1
		1048 B 1
		280 C 1
		49 D 1
		;
run;
proc print data=a; run; /*看一眼数据*/
表2中的数据放入SAS是这个样子哒~

《SAS比较不同年龄段组间差异,卡方检验》
接下来就比较差异性了,都是分类变量,所以计算卡方值,通过P值比较有没有差异性。程序如下:

proc freq data=a;
	tables r*c/chisq;   /*四组年龄段组间比较一下*/
	weight count;
run;

结果如下:
《SAS比较不同年龄段组间差异,卡方检验》
接下来是年龄段1和年龄段2之间的比较,代码如下:

proc freq data=a;
	where r in('A','B');
	tables r*c/chisq;
	weight count;
run;

这是结果展示:
《SAS比较不同年龄段组间差异,卡方检验》
接下来是年龄段1和年龄段3之间的比较,代码如下:

proc freq data=a;
	where r in('A','C');
	tables r*c/chisq;
	weight count;
run;

这是结果展示:
《SAS比较不同年龄段组间差异,卡方检验》
其他几组之间的差异性比较代码如下,结果就不一一展示了,与例子中给的结果是完全一致的。

	proc freq data=a;
		where r in('A','D');
		tables r*c/chisq;
		weight count;
	run;
	proc freq data=a;
		where r in('B','C');
		tables r*c/chisq;
		weight count;
	run;
	proc freq data=a;
		where r in('B','D');
		tables r*c/chisq;
		weight count;
	run;
	proc freq data=a;
		where r in('C','D');
		tables r*c/chisq;
		weight count;
	run;

上面是按步骤简单说明,按上面操作是可以实现论文中的要求的。But,其实每部分的程序都差不多,所以可以编一个小小的宏函数,就可以全部搞定啦!

%macro group_chisq(a,g1,g2);
	proc freq data=&a;
		where r in("&g1","&g2");
		tables r*c/chisq;
		weight count;
	run;
%mend;
%group_chisq(a,A,B)
%group_chisq(a,A,C)
%group_chisq(a,A,D)
%group_chisq(a,B,C)
%group_chisq(a,B,D)
%group_chisq(a,C,D)

需要注意的是宏函数里面的r和c分别对应了原始数据集里的变量,我并没有改。

    原文作者:傲寒和祝星你们可还好
    原文地址: https://blog.csdn.net/weixin_41934690/article/details/104327446
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞