나는 내 자신의 데이터에서 헤 시안 행렬을 얻기 위해 노력하고, 나는이 개 결과이 - 라이브러리 (numDeriv)의 코드 독일인를 사용하여"Hessian"명령과 "numericHessian"명령 사이에서 신뢰해야하는 결과는 무엇입니까?
- 라이브러리에서 코드 numericHessian를 사용하여
- (maxLik)
Hessian의 결과는 numericHessian의 결과에 비해 매우 작습니다.
이 경우 어떤 결과를 신뢰할 수 있습니까?
특히, 사용하는 데이터는 350000에서 1100000까지이며 총 18 개의 데이터 값을 가진 9X2 매트릭스였습니다.
일종의 표준 편차 공식을 사용했고 "numericHessian"의 결과는 2X2 행렬을 사용하여 230에서 466까지의 범위 였지만 "Hessian"의 결과는 -3.42e-18에서 1.34e-17까지였습니다. 이전보다 훨씬 적습니다.
어떤 표준 편차에 대한 올바른 계산이라고 생각하십니까?
는 다음 코드이므로 :
data=read.table("C:/file.txt", header=T);
data <- as.matrix(data);
library(plyr)
library(MASS)
w1 = tail(data/(rowSums(data)),1)
w2 = t(w1)
f <- function(x){
w1 = tail(x/(rowSums(x)),1)
w2 = t(w1)
r = ((w1%*%cov(cbind(x))%*%w2)^(1/2))
return(r)
}
library(maxLik);
numericHessian(f, t0=rbind(data[1,1], data[1,2]))
library(numDeriv);
hessian(f, rbind(data[1,1], data[1,2]), method="Richardson")
File.txt를 다음이다 :
1 2
137 201
122 342
142 111
171 126
134 123
823 876
634 135
541 214
423 142
은 "numericHessian"의 결과이다 : 다음
[,1] [,2]
[1,] 0.007105427 0.007105427
[2,] 0.007105427 0.000000000
, "Hessian"의 결과는 다음과 같습니다.
[,1] [,2]
[1,] -3.217880e-15 -1.957243e-16
[2,] -1.957243e-16 1.334057e-16
미리 감사드립니다.
여기에 대한 세부 정보가 충분하지 않습니다. 재현 할 수있는 예를 들어 주시겠습니까? –
좋은 시작이지만 재현 할 수는 없습니다. –
내 대답은 아래 편집 된 버전을 보았습니까? –