sas输出基尼方差,F检验
有时候,我们在建模前期会有一个变量探索的单变量与因变量的数据分析报告,但其实,不同的数据形式有不同的指标来衡量变量与因变量的解释能力
今天的代码介绍的就是单变量与因变量之间的基尼方差,F检验的输出,你会说那proc reg中就有p值的输出啊,为什么要自己写。我个人是觉得proc reg是针对线性回归的,但是我们今天用到的因变量依旧还是二元的分类变量,所以就用我自己写到啦。
01
基尼方差
基尼方差被定义为衡量以下三种情况下变量之间的关联性指标:
1、一个连续变量和一个名字或顺序变量。
2、两个名字变量。
3、两个顺序变量。
这里介绍一个连续变量以及一个名义变量x的情况。介绍之前先明白几个符号的由来
基尼方差可以定义为:
G=1-SSE/STD
02
F检验
F检验衡量的是一个连续变量和一个名义变量之间的关联性,其中,谁是因变量不重要,该检验对两种情况都有效,F检验的统计量定义为:
F=MSTR/MSE
如果x是二元变量,并用0,1表示,F值及其相关联的p值可以用线性回归模型进行计算,模型中的y作为因变量,x作为唯一的自变量,用线性回归计算出来的f值可以用p值进行解释。这里你肯定你懵逼,你这不是打脸吗,说好y是二元的。因为我这部分是只有y和x两个变量,所以谁做因变量都无所谓。p值是可以建立模型的概率,及变量x和y之间无关联的概率。数据分析师培训
终于可以贴代码了!!!
%let DSin=test.SCORE_TOTAL_LIST_TEST_4;
%let Xvar=customer_status;
%let YVar=var1;
%macro CalcGrF(DSin, Xvar, YVar, M_Gr, M_Fstar, M_Pvalue);
proc freq data=&DSin noprint ;
tables &XVar /missing out=Temp_Cats;
run;
Data _null_;
retain N 0;
set Temp_Cats;
N=N+count;
call symput ("X_" || left(_N_), compress(&XVar));
call symput ("n_" || left(_N_), left(count));
call symput ("K", left(_N_));
call symput ("N", left(N));
Run;
proc sql noprint;
select avg(&YVar) into :Ybar from &DSin;
%local i;
%do i=1 %to &K;
select avg(&YVar) into :Ybar_&i
from &DSin where &XVar = "&&X_&i";
%end;
select var(&YVar) into: SSTO from &DSin;
%let SSTO=%sysevalf(&SSTO *(&N-1));
%let SSR=0;
%let SSE=0;
%do i=1 %to &K;
select var(&YVar) into: ssei
from &DSin where &Xvar="&&X_&i";
%let SSE=%sysevalf(&SSE + &ssei * (&&n_&i - 1)) ;
%let SSR=%sysevalf(&SSR+ &&n_&i * (&&Ybar_&i - &Ybar)*(&&Ybar_&i - &Ybar));
%end;
quit;
%let MSR=%sysevalf(&SSR/(&K-1));
%let MSE=%sysevalf(&SSE/(&N-&K));
%let M_Gr=%Sysevalf(1-(&SSE/&SSTO));
%let M_Fstar=%sysevalf(&MSR/&MSE);
%let M_PValue=%sysevalf(%sysfunc(probf(&M_Fstar,&K-1,&N-&K)));
data result;
M_Gr=&M_Gr.;
M_Fstar=&M_Fstar.;
M_PValue=&M_PValue.;
run;
proc datasets library=work nolist;
delete temp_cats;
run; quit;
%mend;
%CalcGrF(DSin=&DSin., Xvar=&Xvar., YVar=&YVar.);
结果如下:
这个结果显示的是:p值很高,没有什么关联性。具体的解释也可以自行百度哈
数据分析咨询请扫描二维码