Lỗi tiêu chuẩn của ước tính phân phối hyperbolic sử dụng phương pháp delta?


8

Tôi muốn tính toán các lỗi tiêu chuẩn của phân phối hyperbol được trang bị.

Theo ký hiệu của tôi, mật độ được đưa ra bởi Tôi đang sử dụng gói HyperbolicDistr trong R. Tôi ước tính các tham số thông qua lệnh sau:

H(l;α,β,μ,δ)=α2β22αδK1(δα2β2)exp(αδ2+(lμ)2+β(lμ))
hyperbFit(mydata,hessian=TRUE)

Điều này cho tôi một tham số sai. Tôi thay đổi nó thành tham số hóa mong muốn của tôi với hyperbChangePars(from=1,to=2,c(mu,delta,pi,zeta))lệnh. Sau đó, tôi muốn có các lỗi tiêu chuẩn của các ước tính của mình, tôi có thể lấy nó để tham số hóa sai với summarylệnh. Nhưng điều này mang lại cho tôi các lỗi tiêu chuẩn cho tham số hóa khác. Theo chủ đề này, tôi phải sử dụng phương thức delta (tôi không muốn sử dụng bootstrap hoặc xác thực chéo hoặc như vậy).

Các hyperbFitcode đang ở đây . Và đâyhyperbChangePars là . Vì vậy, tôi biết rằng và giữ nguyên. Do đó, các lỗi tiêu chuẩn là như nhau, phải không?δμδ

Để chuyển đổi và thành và tôi cần mối quan hệ giữa chúng. Theo mã này được thực hiện như sau:ζ alpha betaπζαβ

alpha <- zeta * sqrt(1 + hyperbPi^2) / delta
beta <- zeta * hyperbPi / delta

Vậy làm thế nào để tôi phải mã hóa phương thức delta để có được các lỗi tiêu chuẩn mong muốn?

EDIT: Tôi đang sử dụng những dữ liệu này . Trước tiên tôi thực hiện phương thức delta theo chủ đề này.

# fit the distribution

hyperbfitdb<-hyperbFit(mydata,hessian=TRUE)
hyperbChangePars(from=1,to=2,hyperbfitdb$Theta)
summary(hyperbfitdb)

summary(hyperbfitdb) đưa ra đầu ra sau:

Data:      mydata 
Parameter estimates:
        pi           zeta         delta           mu    
    0.0007014     1.3779503     0.0186331    -0.0001352 
  ( 0.0938886)  ( 0.9795029)  ( 0.0101284)  ( 0.0035774)
Likelihood:         615.992 
Method:             Nelder-Mead 
Convergence code:   0 
Iterations:         315 

hyperbChangePars(from=1,to=2,hyperbfitdb$Theta)đưa ra đầu ra sau:

   alpha.zeta     beta.zeta   delta.delta         mu.mu 
73.9516898823  0.0518715378  0.0186331187 -0.0001352342 

bây giờ tôi xác định các biến theo cách sau:

pi<-0.0007014 
lzeta<-log(1.3779503)
ldelta<-log(0.0186331)

Bây giờ tôi chạy mã (chỉnh sửa thứ hai) và nhận được kết quả sau:

> se.alpha
         [,1]
[1,] 13.18457
> se.beta
        [,1]
[1,] 6.94268

Điều này có đúng không? Tôi tự hỏi về những điều sau đây: Nếu tôi sử dụng thuật toán bootstrap theo cách sau:

B = 1000 # number of bootstraps

alpha<-NA
beta<-NA
delta<-NA
mu<-NA


# Bootstrap
for(i in 1:B){
  print(i)
  subsample = sample(mydata,rep=T)
  hyperboot <- hyperbFit(subsample,hessian=FALSE)
  hyperboottransfparam<- hyperbChangePars(from=1,to=2,hyperboot$Theta)
  alpha[i]    = hyperboottransfparam[1]
  beta[i]    = hyperboottransfparam[2]
  delta[i] = hyperboottransfparam[3]
  mu[i] = hyperboottransfparam[4]

}
# hist(beta,breaks=100,xlim=c(-200,200))
sd(alpha)
sd(beta)
sd(delta)
sd(mu)

Tôi nhận được 119.6cho sd(alpha)35.85cho sd(beta). Kết quả rất khác nhau? Có một sai lầm hoặc vấn đề ở đây là gì?

Câu trả lời:


10

Trong giải pháp sau đây, tôi giả sử hyperbPilà . Ngoài ra, phương sai được sử dụng trong các xấp xỉ bên dưới chỉ đơn giản là các lỗi tiêu chuẩn bình phương được tính sau , vì vậy . Để tính toán xấp xỉ bằng phương pháp delta , chúng ta cần các đạo hàm riêng của hàm biến đổi s và . Các hàm chuyển đổi cho và được cung cấp bởi: πsummaryhyperbFitVar(X)=SE(X)2gα(ζ,π,δ)gβ(ζ,π,δ)αβ

gα(ζ,π,δ)=ζ1+π2δgβ(ζ,π,δ)=ζπδ
Các đạo hàm riêng của hàm biến đổi cho sau đó: Các đạo hàm riêng của hàm biến đổi cho là: α
ζgα(ζ,π,δ)=1+π2δπgα(ζ,π,δ)=πζ1+π2δδgα(ζ,π,δ)=1+π2ζδ2
β
ζgβ(ζ,π,δ)=πδπgβ(ζ,π,δ)=ζδδgβ(ζ,π,δ)=πζδ2

Áp dụng phương thức delta cho các phép biến đổi, chúng ta có được xấp xỉ sau cho phương sai của (lấy căn bậc hai để nhận các lỗi tiêu chuẩn): Phương sai gần đúng của là:α

Var(α)1+π2δ2Var(ζ)+π2ζ2(1+π2)δ2Var(π)+(1+π2)ζ2δ4Var(δ)+2×[πζδ2Cov(π,ζ)(1+π2)ζδ3Cov(δ,ζ)πζ2δ3Cov(δ,π)]
β

Var(β)π2δ2Var(ζ)+ζ2δ2Var(π)+π2ζ2δ4Var(δ)+2×[πζδ2Cov(π,ζ)π2ζδ3Cov(δ,ζ)πζ2δ3Cov(π,δ)]

Mã hóa trong R

Cách nhanh nhất để tính các xấp xỉ trên là sử dụng ma trận. Suy ra vectơ hàng chứa các đạo hàm riêng của hàm biến đổi cho hoặc đối với . Hơn nữa, biểu thị của sai-hiệp phương sai của ma trận . Ma trận hiệp phương sai có thể được lấy bằng cách gõ vào đâu là hàm được trang bị. Giá trị gần đúng của phương sai của sau đó là Điều tương tự cũng đúng với phương pháp gần đúng của phương saiDαβζ,π,δΣ3×3ζ,π,δvcov(my.hyperbFit)my.hyperbFitα

Var(α)DαΣDα
β.

Trong R, điều này có thể dễ dàng được mã hóa như thế này:

#-----------------------------------------------------------------------------
# The row vector D of the partial derivatives for alpha
#-----------------------------------------------------------------------------

D.alpha <- matrix(
  c(
    sqrt(1+pi^2)/delta,                 # differentiate wrt zeta
    ((pi*zeta)/(sqrt(1+pi^2)*delta)),   # differentiate wrt pi
    -(sqrt(1+pi^2)*zeta)/(delta^2)      # differentiate wrt delta
  ),
  ncol=3)

#-----------------------------------------------------------------------------
# The row vector D of the partial derivatives for beta
#-----------------------------------------------------------------------------

D.beta <- matrix(
  c(
    (pi/delta),            # differentiate wrt zeta
    (zeta/delta),          # differentiate wrt pi
    -((pi*zeta)/delta^2)   # differentiate wrt delta
  ),
  ncol=3)

#-----------------------------------------------------------------------------
# Calculate the approximations of the variances for alpha and beta
# "sigma" denotes the 3x3 covariance matrix
#-----------------------------------------------------------------------------

var.alpha <- D.alpha %*% sigma %*% t(D.alpha) 
var.beta <- D.beta %*% sigma %*% t(D.beta)

#-----------------------------------------------------------------------------
# The standard errors are the square roots of the variances
#-----------------------------------------------------------------------------

se.alpha <- sqrt(var.alpha)
se.beta <- sqrt(var.beta)

Sử dụng vàlog(ζ)log(δ)

Nếu các lỗi / phương sai tiêu chuẩn chỉ khả dụng cho và thay vì và , các hàm chuyển đổi sẽ thay đổi thành : Các đạo hàm riêng của hàm biến đổi cho là: ζ=log(ζ)δ=log(δ)ζδ

gα(ζ,π,δ)=exp(ζ)1+π2exp(ζ)gβ(ζ,π,δ)=exp(ζ)πexp(δ)
α
ζgα(ζ,π,δ)=1+π2exp(δ+ζ)πgα(ζ,π,δ)=πexp(δ+ζ)1+π2δgα(ζ,π,δ)=1+π2exp(δ+ζ)
Các đạo hàm riêng của hàm biến đổi cho là: β
ζgβ(ζ,π,δ)=πexp(δ+ζ)πgβ(ζ,π,δ)=exp(δ+ζ)δgβ(ζ,π,δ)=πexp(δ+ζ)
Áp dụng phương thức delta cho các phép biến đổi, chúng ta có được xấp xỉ sau cho phương sai của : α
Var(α)(1+π2)exp(2δ+2ζ)Var(ζ)+π2exp(2δ+2ζ)1+π2Var(π)+(1+π2)exp(2δ+2ζ)Var(δ)+2×[πexp(2δ+2ζ)Cov(π,ζ)(1+π2)exp(2δ+2ζ)Cov(δ,ζ)πexp(2δ+2ζ)Cov(δ,π)]
Phương sai gần đúng của là: β
Var(β)π2exp(2δ+2ζ)Var(ζ)+exp(2δ+2ζ)Var(π)+π2exp(2δ+2ζ)Var(δ)+2×[πexp(2δ+2ζ)Cov(π,ζ)π2exp(2δ+2ζ)Cov(δ,ζ)πexp(2δ+2ζ)Cov(δ,π)]

Mã hóa trong R2

Lần này, sigmabiểu thị ma trận hiệp phương sai nhưng bao gồm phương sai và hiệp phương sai cho và thay vì và .δ * = log ( δ ) ζ δζ=log(ζ)δ=log(δ)ζδ

#-----------------------------------------------------------------------------
# The row vector D of the partial derivatives for alpha
#-----------------------------------------------------------------------------

D.alpha <- matrix(
  c(
    sqrt(1+pi^2)*exp(-ldelta + lzeta),            # differentiate wrt lzeta
    ((pi*exp(-ldelta + lzeta))/(sqrt(1+pi^2))),   # differentiate wrt pi
    (-sqrt(1+pi^2)*exp(-ldelta + lzeta))          # differentiate wrt ldelta
  ),
  ncol=3)

#-----------------------------------------------------------------------------
# The row vector D of the partial derivatives for beta
#-----------------------------------------------------------------------------

D.beta <- matrix(
  c(
    (pi*exp(-ldelta + lzeta)),    # differentiate wrt lzeta
    exp(-ldelta + lzeta),         # differentiate wrt pi
    (-pi*exp(-ldelta + lzeta))    # differentiate wrt ldelta
  ),
  ncol=3)

#-----------------------------------------------------------------------------
# Calculate the approximations of the variances for alpha and beta
# "sigma" denotes the 3x3 covariance matrix with log(delta) and log(zeta)
#-----------------------------------------------------------------------------

var.alpha <- D.alpha %*% sigma %*% t(D.alpha) 
var.beta <- D.beta %*% sigma %*% t(D.beta)

#-----------------------------------------------------------------------------
# The standard errors are the square roots of the variances
#-----------------------------------------------------------------------------

se.alpha <- sqrt(var.alpha)
se.beta <- sqrt(var.beta)

1
@BenBohold Các thuật ngữ bên trong ngoặc trước các điều khoản hiệp phương sai là sản phẩm của các đạo hàm riêng tương ứng của các hàm biến đổi. Ví dụ: Thuật ngữ trước là sản phẩm của wrt phái sinh một phần nhân với wrt phái sinh một phần . Trong trường hợp đây sẽ là: . π ζ beta ζ / δ × π / δ = ( ζ π ) / δ 2Cov(π,ζ)πζβζ/δ×π/δ=(ζπ)/δ2
COOLSerdash

1
@BenBohold Lạ, nhưng không vấn đề gì. Hãy thử tính ma trận hiệp phương sai theo cách này : varcov <- solve(hyperbfitalv$hessian). Nó có hoạt động không? Sau đó, bạn sẽ phải chọn ma trận con chỉ chứa . Cách dễ nhất tôi có thể giúp bạn là nếu bạn cung cấp một ví dụ hoạt động đầy đủ với dữ liệu (bạn không phải cung cấp tất cả dữ liệu của mình). π,ζ,δ
COOLSerdash

3
Cảm ơn rất nhiều vì câu trả lời của bạn, nhưng đây chính xác là vấn đề, bởi vì việc tham số hóa của hessian này là cho log (delta) và log (zeta) chứ không phải cho delta và zeta! Xem theo dõi tôi viết: stats.stackexchange.com/questions/67595/... và đặc biệt là câu trả lời của CT Zhu đây stats.stackexchange.com/questions/67602/...
Jen Bohold

2
người ta phải lấy hessian của pi, log (zeta), log (delta) và mu vào hessian của pi, zeta, delta và mu. Bạn có biết làm thế nào điều này có thể được thực hiện?
Jen Bohold

2
Tôi cũng đã thử làm điều đó với hessian "sai", vì vậy với log (delta) và log (zeta), sau đó tôi đã chọn ma trận con và thực hiện các phép tính. Kết quả không chính xác, vì các giá trị quá lớn, khoảng 60 000 hoặc hơn.
Jen Bohold

-2

Có thể trùng lặp: Lỗi tiêu chuẩn của hyperbFit?

Tôi có thể đặt cược một số tài khoản thuộc về cùng một người ...


Tôi đã liên kết chủ đề đó trong bài viết của tôi! Và nếu bạn thực sự đọc câu hỏi của tôi, bạn sẽ thấy, rằng tôi KHÔNG MUỐN sử dụng thuật toán bootstrap, nhưng tôi đang hỏi về phương pháp delta.
Jen Bohold
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.