1 BoxCox变换

在回归模型号中,Box-Cox变换是对因变量Y作如下变换:

黄金分割法python 黄金分割法求极小点_黄金分割法python

            (1.1)

这里黄金分割法python 黄金分割法求极小点_搜索_02是一个待定变换参数。对不同的黄金分割法python 黄金分割法求极小点_正态分布_03,所做的变换自然就不同,所以是一个变换族。它包括了对数变换(黄金分割法python 黄金分割法求极小点_黄金分割法python_04=0),平方根变换(

黄金分割法python 黄金分割法求极小点_正态分布_05

)和倒数变换(黄金分割法python 黄金分割法求极小点_黄金分割法python_06=-1)等常用变换。

黄金分割法python 黄金分割法求极小点_似然函数_07

图1. 变换前变量的分布

黄金分割法python 黄金分割法求极小点_黄金分割法python_08

图2.变换后变量分布

对因变量的n个观测值

黄金分割法python 黄金分割法求极小点_黄金分割法python_09

,应用上述变换,得到变换后的向量

黄金分割法python 黄金分割法求极小点_黄金分割法python_10

          (1.2)

即要确定变换参数黄金分割法python 黄金分割法求极小点_似然函数_11,使得

黄金分割法python 黄金分割法求极小点_似然函数_12

满足

黄金分割法python 黄金分割法求极小点_搜索_13

         (1.3)

也就是说,通过对因变量的变换,使得变换过的向量

黄金分割法python 黄金分割法求极小点_搜索_14

与回归自变量具有线性相依关系,误差也服从正态分布,误差各分量是等方差且相互独立。

  以极大似然法来确定黄金分割法python 黄金分割法求极小点_正态分布_15。因为

黄金分割法python 黄金分割法求极小点_正态分布_16

,所以对固定的黄金分割法python 黄金分割法求极小点_黄金分割法python_17黄金分割法python 黄金分割法求极小点_似然函数_18黄金分割法python 黄金分割法求极小点_似然函数_19的似然函数为

黄金分割法python 黄金分割法求极小点_黄金分割法python_20

 (1.4)

这里黄金分割法python 黄金分割法求极小点_黄金分割法python_21为变换Jacobi的行列式

黄金分割法python 黄金分割法求极小点_正态分布_22

           (1.5)

黄金分割法python 黄金分割法求极小点_似然函数_23固定时,黄金分割法python 黄金分割法求极小点_搜索_24是不依赖于参数黄金分割法python 黄金分割法求极小点_似然函数_25黄金分割法python 黄金分割法求极小点_搜索_26的常数因子。

黄金分割法python 黄金分割法求极小点_正态分布_27

的其余部分关于黄金分割法python 黄金分割法求极小点_正态分布_28黄金分割法python 黄金分割法求极小点_搜索_29求导数,令其等于0,可以求得黄金分割法python 黄金分割法求极小点_搜索_30黄金分割法python 黄金分割法求极小点_黄金分割法python_31的极大似然估计

黄金分割法python 黄金分割法求极小点_正态分布_32

          (1.6)

黄金分割法python 黄金分割法求极小点_似然函数_33

 (1.7)

为了求

黄金分割法python 黄金分割法求极小点_黄金分割法python_34

的最大值,考虑到lnx是x的单调函数,对

黄金分割法python 黄金分割法求极小点_黄金分割法python_35

求对数。略去与黄金分割法python 黄金分割法求极小点_黄金分割法python_36无关的常数项,得到

黄金分割法python 黄金分割法求极小点_似然函数_37

 (1.8)

其中

黄金分割法python 黄金分割法求极小点_正态分布_38

(1.9)

黄金分割法python 黄金分割法求极小点_黄金分割法python_39

(1.10)

黄金分割法python 黄金分割法求极小点_黄金分割法python_40

(1.11)

(1.9)式对Box-Cox变换带来很大方便,因为为了求

黄金分割法python 黄金分割法求极小点_正态分布_41

的最大值,只需求残差平方和的

黄金分割法python 黄金分割法求极小点_正态分布_42

最小值。

2 单变量的Box-Cox变换

设变量黄金分割法python 黄金分割法求极小点_搜索_43经变换后,

黄金分割法python 黄金分割法求极小点_搜索_44

(2.1)

对固定的黄金分割法python 黄金分割法求极小点_正态分布_45黄金分割法python 黄金分割法求极小点_搜索_46黄金分割法python 黄金分割法求极小点_正态分布_47的似然函数为

黄金分割法python 黄金分割法求极小点_黄金分割法python_48

(2.2)

黄金分割法python 黄金分割法求极小点_正态分布_49同为变换Jacobi的行列式

黄金分割法python 黄金分割法求极小点_似然函数_50

(2.3)

  求得黄金分割法python 黄金分割法求极小点_黄金分割法python_51黄金分割法python 黄金分割法求极小点_搜索_52的极大似然估计为

黄金分割法python 黄金分割法求极小点_正态分布_53

           (2.4)

黄金分割法python 黄金分割法求极小点_似然函数_54

           (2.5)

对极大似然函数作对数变换

黄金分割法python 黄金分割法求极小点_似然函数_55

(2.6)

化简得

黄金分割法python 黄金分割法求极小点_黄金分割法python_56

(2.7)

其中

黄金分割法python 黄金分割法求极小点_搜索_57

(2.8)

黄金分割法python 黄金分割法求极小点_搜索_58

(2.9)

(2.9)亦即为几何平均值。

为了简单起见,重新将Box-Cox变换定义为

黄金分割法python 黄金分割法求极小点_搜索_59

(2.10)

为了最大化

黄金分割法python 黄金分割法求极小点_似然函数_60

,只须最小化

黄金分割法python 黄金分割法求极小点_似然函数_61

3 黄金分割搜索法

黄金分割法(Golden Section Method),是用于在单峰函数区间上求极小值的一种方法。其基本思想是通过取试探点和函数值比较,使包含极小点的搜索区间不断减少,当区间长度缩短到一定程度时,就得到函数极小点的近似值。

  设黄金分割法python 黄金分割法求极小点_似然函数_62是一元二次方程

黄金分割法python 黄金分割法求极小点_黄金分割法python_63

(3.1)

的正根,即

黄金分割法python 黄金分割法求极小点_正态分布_64

  对于函数

黄金分割法python 黄金分割法求极小点_黄金分割法python_65

,先在搜索区间[a,b]上确定两个试探点,其中左试探点为

黄金分割法python 黄金分割法求极小点_黄金分割法python_66

(3.2)

右试探点为

黄金分割法python 黄金分割法求极小点_似然函数_67

(3.3)

再分别计算这两个试探点的函数值

黄金分割法python 黄金分割法求极小点_正态分布_68

黄金分割法python 黄金分割法求极小点_似然函数_69

。由单峰函数的性质,若

黄金分割法python 黄金分割法求极小点_黄金分割法python_70

,则区间

黄金分割法python 黄金分割法求极小点_正态分布_71

内不可能有极小点,因此去掉区间

黄金分割法python 黄金分割法求极小点_搜索_72

,令a’=a,b’=黄金分割法python 黄金分割法求极小点_正态分布_73,得到一个新的搜索区间。若

黄金分割法python 黄金分割法求极小点_正态分布_74

,则区间

黄金分割法python 黄金分割法求极小点_黄金分割法python_75

内不可能有极小点,去掉区间

黄金分割法python 黄金分割法求极小点_正态分布_76

,令a’=黄金分割法python 黄金分割法求极小点_黄金分割法python_77,b’=b,得到一个新的搜索区间。

  类似上面的步骤,在区间[a’,b’]内再计算两个新的试探点

黄金分割法python 黄金分割法求极小点_搜索_78

(3.4)

黄金分割法python 黄金分割法求极小点_搜索_79

(3.5)

比较函数值,得到新的区间。

  在上述方中,事实上每次迭代并不需要计算两个试探点及函数值。下面对新的试探点进行分析。

(1) 若

黄金分割法python 黄金分割法求极小点_搜索_80

,则去掉区间

黄金分割法python 黄金分割法求极小点_正态分布_81

,那么新的右试探点为

黄金分割法python 黄金分割法求极小点_黄金分割法python_82

(3.6)

注意到黄金分割法python 黄金分割法求极小点_黄金分割法python_83是方程(3.1)的根,因此有

黄金分割法python 黄金分割法求极小点_似然函数_84

(3.7)

即原区间的左试探点。

(2) 若

黄金分割法python 黄金分割法求极小点_搜索_85

,则去掉区间

黄金分割法python 黄金分割法求极小点_正态分布_86

,那么新的左试探点为

黄金分割法python 黄金分割法求极小点_黄金分割法python_87

(3.8)

即原区间的右试探点。

  因此在上述计算过程中,只需要计算一个新试探点和一个点的函数值。

算法:

(1) 置初始搜索区间[a,b],并置精度要求黄金分割法python 黄金分割法求极小点_正态分布_88,并计算左右试探点

黄金分割法python 黄金分割法求极小点_黄金分割法python_89

黄金分割法python 黄金分割法求极小点_似然函数_90

,其中

黄金分割法python 黄金分割法求极小点_黄金分割法python_91

及相应的函数值

黄金分割法python 黄金分割法求极小点_似然函数_92

黄金分割法python 黄金分割法求极小点_黄金分割法python_93

(2) 如果

黄金分割法python 黄金分割法求极小点_正态分布_94

,则置

b=黄金分割法python 黄金分割法求极小点_似然函数_95,黄金分割法python 黄金分割法求极小点_黄金分割法python_96=黄金分割法python 黄金分割法求极小点_搜索_97,

黄金分割法python 黄金分割法求极小点_搜索_98

,

并计算

黄金分割法python 黄金分割法求极小点_黄金分割法python_99

黄金分割法python 黄金分割法求极小点_似然函数_100

否则

a=黄金分割法python 黄金分割法求极小点_似然函数_101,

黄金分割法python 黄金分割法求极小点_正态分布_102

,

黄金分割法python 黄金分割法求极小点_黄金分割法python_103

并计算

黄金分割法python 黄金分割法求极小点_搜索_104

黄金分割法python 黄金分割法求极小点_黄金分割法python_105

(3) 若|b-a|黄金分割法python 黄金分割法求极小点_正态分布_106,如果

黄金分割法python 黄金分割法求极小点_似然函数_107

,则置问题的解

黄金分割法python 黄金分割法求极小点_搜索_108

;否则置

黄金分割法python 黄金分割法求极小点_黄金分割法python_109

,停止计算。否解转到(2)继续计算。

4 正态分布检验

I. W检验

W检验是S.S.Shapiro和M.B.Wilk1965年提出来的,这种方法在样本容量3黄金分割法python 黄金分割法求极小点_搜索_110n黄金分割法python 黄金分割法求极小点_似然函数_11150时适用。

  W检验即检验假设

黄金分割法python 黄金分割法求极小点_正态分布_112:总体服从正态分布

  利用W检验的方法检验原假设黄金分割法python 黄金分割法求极小点_正态分布_113的步骤如下

(1) 把n个样本观测值按由小到大的次序排列成

黄金分割法python 黄金分割法求极小点_黄金分割法python_114

(2) W检验的统计量为

黄金分割法python 黄金分割法求极小点_似然函数_115

(4.1)

其中黄金分割法python 黄金分割法求极小点_黄金分割法python_116表示样本均值,

黄金分割法python 黄金分割法求极小点_似然函数_117

的值可查表得。黄金分割法python 黄金分割法求极小点_搜索_118表示数黄金分割法python 黄金分割法求极小点_搜索_119的整数部分。

黄金分割法python 黄金分割法求极小点_搜索_120

的值代入(3.1)式计算统计量W的值。

(3) 根据给定的检验水平黄金分割法python 黄金分割法求极小点_黄金分割法python_121和样本容量n查表得统计量W的黄金分割法python 黄金分割法求极小点_似然函数_122的分位数黄金分割法python 黄金分割法求极小点_黄金分割法python_123

(4) 作出间判断:若W<黄金分割法python 黄金分割法求极小点_正态分布_124,则拒绝黄金分割法python 黄金分割法求极小点_黄金分割法python_125,认为总体不服从正态分布;若W黄金分割法python 黄金分割法求极小点_正态分布_126黄金分割法python 黄金分割法求极小点_搜索_127,则不拒绝黄金分割法python 黄金分割法求极小点_黄金分割法python_128

II. D检验

W检验是一种有效的正态性检验方法,可惜它只适用于容量为3至50的样本。1971年D’Agostino提出了D’Agostino检验(简称D检验)。这种检验不需要附系数表,它所适用的样本容量n的范围为50黄金分割法python 黄金分割法求极小点_正态分布_129n黄金分割法python 黄金分割法求极小点_似然函数_1301000。

  进行D检验的步骤如下:

(1) 把n个样本观测值按由小到大的次序排列成

黄金分割法python 黄金分割法求极小点_正态分布_131

(2) D检验的统计量为

黄金分割法python 黄金分割法求极小点_黄金分割法python_132

(4.2)

其中

黄金分割法python 黄金分割法求极小点_黄金分割法python_133

(4.3)

按(4.2)和(4.3)式计算统计量Y的值。

(3) 根据给定的检验水平黄金分割法python 黄金分割法求极小点_黄金分割法python_134和样本容量n查表,得统计量Y的黄金分割法python 黄金分割法求极小点_似然函数_135分位数黄金分割法python 黄金分割法求极小点_黄金分割法python_136和1-黄金分割法python 黄金分割法求极小点_黄金分割法python_137分位数黄金分割法python 黄金分割法求极小点_黄金分割法python_138

(4) 作出判断:若Y<黄金分割法python 黄金分割法求极小点_正态分布_139或Y>黄金分割法python 黄金分割法求极小点_黄金分割法python_140,则拒绝黄金分割法python 黄金分割法求极小点_搜索_141,否则不拒绝黄金分割法python 黄金分割法求极小点_黄金分割法python_142

附:Box-Cox变换的R代码

BoxCox_Trans<-function(x,interval,loop=1000,epsilon= .Machine$double.eps){ 
Likelihood_Log<-function(x,lambda){ 
y_lambda<-function(x,lambda){ 
gm<-exp(mean(log(x))) 
if (lambda == 0)  
log(x) * gm 
else (gm^(1 - lambda)) * ((x^lambda) - 1)/lambda 
} 
y <- y_lambda(x, lambda) 
(length(y)/2) * log(((length(y) - 1)/length(y)) * var(y)) 
} 
GoldenSecSearch<-function(f,x,interval,loop, epsilon) 
{ 
t<-(sqrt(5) - 1)/2 
a<-min(interval) 
b<-max(interval) 
a_l<-a+(1-t)*(b-a) 
a_r<-a+t*(b-a) 
f_l<-f(x,a_l) 
f_r<-f(x,a_r)  
i<-1 
while(abs(b-a)>epsilon){ 
i<-i+1 
if(f_l<f_r){ 
b<-a_r 
a_r<-a_l 
f_r<-f_l 
a_l<-a+(1-t)*(b-a) 
f_l<-f(x,a_l) 
} 
else { 
a<-a_l 
a_l<-a_r 
f_l<-f_r 
a_r<-a+t*(b-a) 
f_r<-f(x,a_r) 
} 
if(i>loop) break 
}  
Result<-list() 
if(f_l<f_r) { 
Result$minimum<-a_l 
Result$Objective<-f_l 
} 
else { 
Result$minimum<-a_r 
Result$Objective<-f_r 
} 
Result 
} 
Output<-list() 
Output<- GoldenSecSearch(Likelihood_Log,x,interval,loop,epsilon) 
Output 
} 
进行变换的R代码 
> attach(Prestige) //car package 
> hist(income) 
> BoxCox_Trans(income,seq(-3,3)) 
$minimum 
[1] 0.1792894 
$Objective 
[1] 827.9459 
> hist(income^0.1792894)