1.简介
描述两个连续变量之间线性关系强度的常用统计指标,被称为皮尔逊相关系数,也简称相关系数。相关系数是-1到1之间的一个数字。
2.相关
DATA CORR_EG;
INPUT GENDER $ HEIGHT WEIGHT AGE;
DATALINES;
M 68 155 23
F 61 99 20
F 63 115 21
M 70 205 45
M 69 170 .
F 65 125 30
M 72 220 48
;
PROC CORR DATA=CORR_EG;
TITLE "Example of a Correlation Matrix";
VAR HEIGHT WEIGHT AGE;
RUN;
要生成相关矩阵,可以用下面的一般句式:
PROC CORR options;
VAR list-of-variables;
RUN;
选项options可以选择SPEARMAN用来计算斯皮尔曼等级相关,KENDALL计算肯德尔系数,HOEFFDING对应的是Hoeffding的D统计量。假如采取了其中任意一个选项,例如SPEARMAN,如果还想计算皮尔逊相关,则需要加上PEARSON,如果不想进行简单描述统计,则在选项列中加上NOSIMPLE,如果在PROC CORR的选项中添加BEST=number,可以将相关系数按降序排列,number决定输出的矩阵列数。
PROC CORR DATA=CORR_EG PEARSON SPEARMAN NOSIMPLE BEST=2;
VAR HEIGHT WEIGHT AGE;
TITLE "Example of a Correlation Matrix";
RUN;
如果只想看一组变量和另一组变量之间的相关,可以运用WITH语句。PROC CORR将计算WITH 列表中每个变量和VAR列表中每个变量的相关。假如数据集results中含有变量IQ和GPA,以及学生在10个测验上的成绩,要计算这两个变量和每个测验之间的相关系数如下:
PROC CORR DATA=RESULTS;
VAR IQ GPA;
WITH TEST1-TEST10;
RUN;
3.相关系数的显著性
一般认为当相关系数的p小于0.05时显著。
4.偏相关
要知道移除其他变量影响后,某两个变量之间的关系强度,需要计算偏相关系数。
PROC CORR DATA=CORR_EG NOSIMPLE;
TITLE "Example of Partial Correlation";
VAR HEIGHT WEIGHT;
PARTIAL AGE;
RUN;
5.线性回归
通常采用最小二乘法:
PROC REG DATA=CORR_EG;
TITLE "Regression Line for Geight-Weight Data";
MODEL WEIGHT=HEIGHT;
RUN;
6.生成散点图和回归线
下面使用PLOC GPLOT对身高体重的数据绘制坐标图。运用SYMBOL语句改变默认设置,当然也可以不更改。SYMBOL VALUE=DOT COLOR=GREEN;
PROC GPLOT DATA=CORR_EG;
PLOT WEIGHT*HEIGHT;
RUN;
SAS显示数据点和回归线的方法主要有两种,一种是PROC REG中使用PLOT,格式如下:
PLOT y_variable *x_variable/ options;
操作过程:
SYMBOL1 VALUE=TRIANGLE COLOR=BLACK;
PROC REG DATA=CORR_EG;
TITLE "Regression and Residual Plots";
MODEL WEIGHT = HEIGHT;
PLOT WEIGHT * HEIGHT
RESIDUAL. *HEIGHT;*绘制残差关于身高的图形;
RUN;
第二种方法是PROC GPLOT过程中使用适当的SYMBOL 语句。
GOPTIONS CSYMBOL=BLACK;*将所有的绘图记号颜色设为黑色;
SYMBOL1 VALUE=DOT;*指定圆点作为绘图记号;
SYMBOL2 VALUE=NONE I=RLCLM95; *I=(插值法)是呈现回归线和y的平均值95%的置信区间;
SYMBOL3 VALUE=NONE I=RLCLI95 LINE=3; *I=(插值法)是呈现回归线和y的个体的95%的置信区间;
PROC GPLOT DATA=CORR_EG;
TITLE "Regression Lines and 95% CI's";
PLOT WEIGHT * HEIGHT=1
WEIGHT * HEIGHT=2
WEIGHT * HEIGHT=3/OVERLAY;
RUN;
7.在回归方程中加入二次项
如果身高和体重之间存在二次关系,首先需要在DATA步骤中添加一行,在INPUT语句之后添加:
HEIGHT2=HEIGHT*HEIGHT;或者HEIGHT2=HEIGHT**2;
采用PLOT或者PROC REG过程来绘制模型残差图:
SYMBOL VALUE=DOT COLOR=BLUE;
PROC REG DATA=CORR_EG;
MODEL WEIGHT= HEIGHT HEIGHT2;
PLOT R.*HEIGHT;
***R. is short for RESIDUAL.;
RUN;
8.转换非线性模型
首先对一组数据绘图和建立方程:
DATA HEART;
INPUT DOSE HR @@;
DATALINES;
2 60 2 58 4 63 4 62 8 67 8 65 16 70 16 70 32 74 32 73
;
SYMBOL VALUE= DOT COLOR=BLACK I=SM;
***I=SM produces a smooth line through the data points.YOU can follow SM by a number from 0 to 99
to control how much the line should try to touch each data point;
PROC GPLOT DATA=HEART;
PLOT HR*DOSE;
RUN;
PROC REG DATA=HEART;
MODEL HR=DOSE;
RUN;
输出图为:
可以看出这个关系是一个非线性的,下面建立对数模型:
DATA HEART;
INPUT DOSE HR @@;
LDOSE=LOG(DOSE);
LABEL LDOSE="Log of Dose";
DATALINES;
2 60 2 58 4 63 4 62 8 67 8 65 16 70 16 70 32 74 32 73
;
PROC REG DATA=HEART;
TITLE "Investigating the Dose /HR Relationship";
MODEL HR=LDOSE;
RUN;
SYMBOL VALUE=DOT;
PROC GPLOT DATA=HEART;
PLOT HR*LDOSE;
RUN;