전체 견적은 여기에서 찾을 수 있습니다 . 추정치 θ N은 최소화 문제 (의 해결책 페이지 344 )θ^N
minθ∈ΘN−1∑i=1Nq(wi,θ)
솔루션 이 의 내부 점 인 경우 목적 함수는 두 배 미분 가능하고 목적 함수의 기울기는 0 인 경우 목적 함수의 Hessian ( )은 양의 반- 명확한.Θ Hθ^엔ΘH^
이제 Wooldridge는 주어진 샘플에 대해 경험적 헤 시안이 양의 한정 또는 반의 양으로 보장되는 것은 아닙니다. Wooldridge는 목적 함수 에 좋은 속성이 필요하지 때문에 입니다. 대한 고유 한 솔루션이 합니다.θ 0엔− 1∑엔나는 = 1큐( 승나는, θ )θ0
분θ ∈ Θ이자형큐( w , θ ) .
따라서 주어진 표본 목적 함수 에 대해 목적 함수의 Hessian이 양의 한정이 될 필요가없는 의 경계점에서 가 최소화 될 수 있습니다 . 엔− 1∑엔나는 = 1큐( 승나는, θ )Θ
또한 그의 책에서 Wooldridge는 수치 적으로 양의 확실한 것으로 보장되는 Hessian의 추정의 예를 제공합니다. 실제로 Hessian의 양성이 아닌 정의는 해가 경계점에 있거나 알고리즘이 해를 찾지 못했음을 나타냅니다. 일반적으로 적합 된 모형이 주어진 데이터에 적합하지 않을 수 있다는 추가 표시입니다.
다음은 수치 예입니다. 비선형 최소 제곱 문제를 생성합니다.
와이나는= c1엑스씨2나는+ ε나는
엑스[ 1 , 2 ]εσ2set.seed(3)
엑스나는와이나는
일반적인 비선형 최소 제곱 목적 함수의 목적 함수 제곱을 선택했습니다.
큐( w , θ ) = ( y− c1엑스씨2나는)4
다음은 함수, 그레디언트 및 헤 시안 최적화를위한 R 코드입니다.
##First set-up the epxressions for optimising function, its gradient and hessian.
##I use symbolic derivation of R to guard against human error
mt <- expression((y-c1*x^c2)^4)
gradmt <- c(D(mt,"c1"),D(mt,"c2"))
hessmt <- lapply(gradmt,function(l)c(D(l,"c1"),D(l,"c2")))
##Evaluate the expressions on data to get the empirical values.
##Note there was a bug in previous version of the answer res should not be squared.
optf <- function(p) {
res <- eval(mt,list(y=y,x=x,c1=p[1],c2=p[2]))
mean(res)
}
gf <- function(p) {
evl <- list(y=y,x=x,c1=p[1],c2=p[2])
res <- sapply(gradmt,function(l)eval(l,evl))
apply(res,2,mean)
}
hesf <- function(p) {
evl <- list(y=y,x=x,c1=p[1],c2=p[2])
res1 <- lapply(hessmt,function(l)sapply(l,function(ll)eval(ll,evl)))
res <- sapply(res1,function(l)apply(l,2,mean))
res
}
먼저 그라디언트 및 헤 시안이 광고 된대로 작동하는지 테스트합니다.
set.seed(3)
x <- runif(10,1,2)
y <- 0.3*x^0.2
> optf(c(0.3,0.2))
[1] 0
> gf(c(0.3,0.2))
[1] 0 0
> hesf(c(0.3,0.2))
[,1] [,2]
[1,] 0 0
[2,] 0 0
> eigen(hesf(c(0.3,0.2)))$values
[1] 0 0
엑스와이
> df <- read.csv("badhessian.csv")
> df
x y
1 1.168042 0.3998378
2 1.807516 0.5939584
3 1.384942 3.6700205
4 1.327734 -3.3390724
5 1.602101 4.1317608
6 1.604394 -1.9045958
7 1.124633 -3.0865249
8 1.294601 -1.8331763
9 1.577610 1.0865977
10 1.630979 0.7869717
> x <- df$x
> y <- df$y
> opt <- optim(c(1,1),optf,gr=gf,method="BFGS")
> opt$par
[1] -114.91316 -32.54386
> gf(opt$par)
[1] -0.0005795979 -0.0002399711
> hesf(opt$par)
[,1] [,2]
[1,] 0.0002514806 -0.003670634
[2,] -0.0036706345 0.050998404
> eigen(hesf(opt$par))$values
[1] 5.126253e-02 -1.264959e-05
그라디언트는 0이지만 헤 시안은 양수가 아닙니다.
참고 : 이것은 세 번째 답변입니다. 나는 마침내 이전 버전에서 나를 피할 수있는 정확한 수학적 진술을 할 수 있었기를 바랍니다.