SPSS实现Box-Cox转换

标签:
box-cox变换spss教育 |
分类: SPSS |
代码:(来自:《Box_Cox变换及其在SPSS软件中的实现》,感谢其作者)
SET LENGTH=NONE.
SET MXLOOP = 100000000.
MATRIX.
GET W/VARIABLES= all/FILE= */MISSING=OMIT.
COMPUTE NR =NROW(W).
COMPUTE NC =NCOL(W).
COMPUTE Y=MAKE(NR,1,0).
COMPUTE XX=MAKE(NR,NC,1).
COMPUTE YLAM=MAKE(NR,1,1).
COMPUTE BOXCOX=MAKE(61,2,0).
COMPUTE YTEMP=0.
LOOP II=1 TO NR.
COMPUTE Y(II,1)=W(II,1).
LOOP JJ=1 TO NC-1.
COMPUTE XX(II,JJ+1)=W(II,JJ+1).
END LOOP.
COMPUTE YTEMP=YTEMP+LN(Y(II)).
END LOOP.
LOOP TEMP=1 TO 61.
COMPUTE LAMBDA=-3.1 + TEMP * 0.1.
DO IF LAMBDA=0.
COMPUTE YLAM(:)=LN(Y(:)).
ELSE.
COMPUTE YLAM(:)=(Y(:)&**LAMBDA -1)/LAMBDA.
END IF.
COMPUTE BETA=INV(T(XX)*XX)*T(XX)*YLAM.
COMPUTE MSE = T(YLAM-XX*BETA)*(YLAM-XX*BETA)/NR.
COMPUTE LOGLIKE=-1*NR/2*LN(MSE)+(LAMBDA-1)*YTEMP.
COMPUTE BOXCOX(TEMP,1)= LAMBDA.
COMPUTE BOXCOX(TEMP,2)= LOGLIKE.
END LOOP.
SAVE BOXCOX /OUTFILE=*.
END MATRIX.
RENAME VARIABLES COL1= LAMBDA COL2= LOGLIKE.
GRAPH
/SCATTERPLOT(BIVAR)=LAMBDA WITH LOGLIKE /MISSING=LISTWISE
/TITLE= 'Log-Likelihood versus lambda'.
效果图:
http://s9/mw690/004gttBXgy6IRPlpr6M78&690
可看出令似然值最大的lambda,同时SPSS给出了变量的具体值,可以用排序方法找到极值,代入公式:
http://s12/mw690/004gttBXgy6IRPsTlcn3b&690
可求出转换后的变量值。
统计人刘得意
QQ:2859228658