En la siguiente solución, supongo hyperbPi
que es . Además, las variaciones utilizadas en las siguientes aproximaciones son simplemente los errores estándar al cuadrado calculados por after , entonces . Para calcular la aproximación usando el método delta , necesitamos las derivadas parciales de la función de transformación s y . Las funciones de transformación para y están dadas por:
πsummary
hyperbFit
V a r (X) = S E ( X)2solα( ζ, π, δ)solβ( ζ, π, δ)αβ
solα(ζ,π,δ)solβ(ζ,π,δ)=ζ1 +π2-----√δ=ζπδ
Las derivadas parciales de la función de transformación para son entonces:
Las derivadas parciales de la función de transformación para son:
α∂∂ζsolα( ζ, π, δ)∂∂πsolα( ζ, π, δ)∂∂δsolα( ζ, π, δ)=1 +π2-----√δ=πζ1 +π2-----√δ= -1 +π2-----√ζδ2
β∂∂ζsolβ( ζ, π, δ)∂∂πsolβ( ζ, π, δ)∂∂δsolβ( ζ, π, δ)=πδ=ζδ= -πζδ2
Aplicando el método delta a las transformaciones, obtenemos la siguiente aproximación para la varianza de (tome raíces cuadradas para obtener los errores estándar):
La varianza aproximada de es:α
Var(α)≈1+π2δ2⋅Var(ζ)+π2ζ2(1+π2)δ2⋅Var(π)+(1+π2)ζ2δ4⋅Var(δ)+2×[πζδ2⋅Cov(π,ζ)−(1+π2)ζδ3⋅Cov(δ,ζ)−πζ2δ3⋅Cov(δ,π)]
β
Var(β)≈π2δ2⋅Var(ζ)+ζ2δ2⋅Var(π)+π2ζ2δ4⋅Var(δ)+2×[πζδ2⋅Cov(π,ζ)−π2ζδ3⋅Cov(δ,ζ)−πζ2δ3⋅Cov(π,δ)]
Codificando en R
La forma más rápida de calcular las aproximaciones anteriores es usar matrices. Denote el vector de fila que contiene las derivadas parciales de la función de transformación para o con respecto a . Además, denote la matriz de varianza-covarianza de . La matriz de covarianza se puede recuperar escribiendo dónde está la función ajustada. La aproximación anterior de la varianza de es entonces
Lo mismo es cierto para la aproximación de la varianza deDαβζ,π,δΣ3×3ζ,π,δvcov(my.hyperbFit)
my.hyperbFit
α
Var(α)≈DαΣD⊤α
β.
En R
, esto se puede codificar fácilmente así:
#-----------------------------------------------------------------------------
# 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)
Usando ylog(ζ)log(δ)
Si los errores / variaciones estándar solo están disponibles para y lugar de y , las funciones de transformación cambian a :
Las derivadas parciales de la función de transformación para son entonces:
ζ∗=log(ζ)δ∗=log(δ)ζδ
gα(ζ∗,π,δ∗)gβ(ζ∗,π,δ∗)=exp(ζ∗)1+π2−−−−−√exp(ζ∗)=exp(ζ∗)πexp(δ∗)
α∂∂ζ∗gα(ζ∗,π,δ∗)∂∂πgα(ζ∗,π,δ∗)∂∂δ∗gα(ζ∗,π,δ∗)=1+π2−−−−−√exp(−δ∗+ζ∗)=πexp(−δ∗+ζ∗)1+π2−−−−−√=−1+π2−−−−−√exp(−δ∗+ζ∗)
Las derivadas parciales de la función de transformación para son:
β∂∂ζ∗gβ(ζ∗,π,δ∗)∂∂πgβ(ζ∗,π,δ∗)∂∂δ∗gβ(ζ∗,π,δ∗)=πexp(−δ∗+ζ∗)=exp(−δ∗+ζ∗)=−πexp(−δ∗+ζ∗)
Aplicando el
método delta a En las transformaciones, obtenemos la siguiente aproximación para la varianza de :
αVar(α)≈(1+π2)exp(−2δ∗+2ζ∗)⋅Var(ζ∗)+π2exp(−2δ∗+2ζ∗)1+π2⋅Var(π)+(1+π2)exp(−2δ∗+2ζ∗)⋅Var(δ∗)+2×[πexp(−2δ∗+2ζ∗)⋅Cov(π,ζ∗)−(1+π2)exp(−2δ∗+2ζ∗)⋅Cov(δ∗,ζ∗)−πexp(−2δ∗+2ζ∗)⋅Cov(δ∗,π)]
La varianza aproximada de es:
β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(δ∗,π)]
Codificación en R
2
Esta vez, sigma
denota la matriz de covarianza pero incluye las varianzas y covarianzas para y lugar de y .ζ∗=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)