相关分析是对进一步分析的很多帮助的一种分析方法,通过简单的散点图可以直观的看出两个变量之间的关系
1:corr procedure解决两个连续变量间的关系
2:列联表分析一般研究离散变量或定性变量间是否存在相关关系,通过proc freq实现
2.1:两个定性变量(其中一个无序)之间有无关系可以通过卡方分布检验
2.2:两个定性变量之间有无因果关系可以通过趋势检验
/***********************************************proc corr****************************************************************/
<options> ;
variables ;
variable ;
variables ;
variables ;
variables ;
variable ;
variables ;
proc corr data=renmin.fitness pearson spearman nosimple; *利用不同相关系数做的相关性分析 nosimple,去除不必要的统计量; var weight Oxygen runtime; *得出的结果所有可能结合的相关性度量以及是否有相关性的假设检验; with var1-var10;*计算var中的每个变量分别与var1-var10的每个变量间的关系,即组与组之间的关系;run;
*偏相关分:析假设我们需要计算X和Y之间的相关性,Z代表其他所有的变量,X和Y的偏相关系数可以认为是X和Z得到的Rx与Y和Z线性回归得到的残差Ry之间的简单相关系数,即pearson相关系数; proc corr data=corr_eg; var height weight; partial age; *移除partial的影响后,看height 和 weight的关系强度;run;
/***********************************************proc freq****************************************************************/
proc freq的研究两个离散变量间的相关性功能
<options> ;
requests </ options> ;
options ;
variable </ option> ; *当我们不希望输入很多观测行时,可用weight作为权重进行计算,freq规定weight的列,在列联表中相应的显示出来;
weight的例子 data test; input group$ outcome$ count; datalines;drug alive 90drug dead 10placebo alive 80placebo dead 20 ;run;proc freq data=test; table group*outcome / chisq norow nocol nopercent; weight count;*如果没有weight,那么列联表中就全为1了;run;
proc format; value purfmt 1 = "$100 +" 0 = "< $100" ;run;*无序的定性双变量分析;proc freq data=double.b_sales_inc; tables gender*purchase / chisq expected cellchi2 nocol nopercent; *chisq是关键,看卡方统计量; format purchase purfmt.; title1 'Association between GENDER and PURCHASE';run;
data double.b_sales_inc; set double.b_sales; inclevel = 1*(income='Low') + 2*(income='Medium') + 3*(income='High');run;proc format; value purfmt 1 = "$100 +" 0 = "< $100" ;run;proc format; value incfmt 1='Low Income' 2='Medium Income' 3='High Income';run;*有序的定性双变量分析;proc freq data=double.b_sales_inc; tables inclevel*purchase / chisq trend measures cl;*看mantel-haenszel卡方,再看趋势检验; format inclevel incfmt. purchase purfmt.; title1 'Ordinal Association between INCLEVEL and PURCHASE?'; run;