回归分析
包括 一元线性回归分析、多元线性回归分析、逐步回归分析、非线性回归分析和Logistic回归分析。
REG过程
功能
可用于一元及多元的线性回归分析。
格式:
proc reg data=数据集名;
model 因变量=自变量/选项;
plot 纵轴变量*横轴变量=“符号”选项;
run;
注:
1.plot
语句用于绘制模型散点图。
例
一元线性回归分析
试建立sashelp.class中身高与体重的回归模型。
代码:
proc reg data=sashelp.class;
model Height=Weight;
plot Height*Weight;
run;
结果:
p值小于0.05,说明体重对身高的影响是显著的。R方值接近于1,说明模型的解释度高。
下图给出的参数的估计值。
多元线性回归分析
与一元线性回归分析类似,只是model
语句中的自变量的个数变多了:model y=x1 x2 ... xn;
逐步回归分析
只需在model
语句的选项后面加一个selection
选项即可,可选值有:forward、backward、stepward等,默认为none。
可化为线性回归的非线性回归分析
在数据步中进行适当转化即可,如对数化。
NLIN过程
功能
对不可变换为线性回归的模型进行非线性回归分析。
格式:
proc nlin data=数据集名<选项>;
parameters 参数名=数值;
model 因变量=表达式<选项>;
bounds 表达式;
run;
注:
1.proc nlin
的选项中method
设置非线性回归中模型参数的迭代方法,有多种选择。
2parameters
设置非线性回归模型中的参数初始值。
3.model
表达式中的变量名对应parameters
的参数名。
4.bounds
规定需要估计的模型参数的合理范围。
例
现有一正弦波,测定了不同时间下的波的频率,试通过非线性回归分析拟合该正弦波的定量模型。
代码:
proc nlin data=temp;
parameters a=0.2,b=0.7,c=0.1; *注意表达式间用逗号隔开;
model frequency=a*sin(b*t)+c;
bounds a>0,b>0,c>0;
run;
结果:
给出了迭代的阶段:
给出了参数的估计:
LOGISTIC回归过程
功能
针对的是二项属性数据(如医学研究中的生存和死亡),通过已知数据计算参数建立模型:
格式:
proc logistic data=数据集名;
model 因变量=自变量;
by 变量;
run;
例
下表为医院统计的A、B、C三种药物对病人治疗情况,试建立Logistic回归模型。
代码:
data temp;
input x1 x2 x3 y @@; *对其先进行数值化处理;
datalines;
1 0 1 1 0 1 1 0
0 0 1 0 1 2 0 1
0 1 1 1 0 2 1 0
1 1 1 1 0 0 0 1
0 1 0 0 0 1 0 1
1 2 1 1 1 2 0 0
0 0 1 0 0 1 0 1
1 2 0 1 0 2 0 1
0 1 1 1 0 0 1 1
0 1 0 1 1 2 0 0
0 1 1 1 1 1 1 1
1 0 0 0 0 0 1 1
1 1 1 1 1 2 0 1
1 1 0 1 0 0 1 1
1 2 0 1 0 1 0 1
0 0 1 1 0 0 0 1
0 1 0 1 1 2 0 1
0 0 0 1 0 0 0 1
1 1 1 1 0 1 0 0
0 0 0 1 1 1 1 1
;
proc logistic data=temp;
model y=x1-x3; *分析变量为x1 x2 x3 ;
run;
结果:
一些基本信息:
建模的概率是y=0,并且给出了各参数的极大似然估计值。