En primer lugar, le sugiero que lea un libro excelente por Ben Bolker derecho de Modelos Ecológicos y de Datos en R. Escrito por ecologistas , creo que este es uno de los mejores libros sobre la práctica de análisis de datos, independientemente de su origen, soy ingeniero y he usado un montón. Estoy seguro de que hay otras estadísticas matemáticas libro, sin embargo este libro es, con mucho, el más práctico libro que he leído. Él también tiene un paquete de BBMLE que usted puede ser que desee comprobar.
El libro, a diferencia de cualquier otro va en la estimación de máxima verosimilitud, el perfil de la probabilidad y el intervalo de confianza de la estimación y todo eso.
Volviendo a tu problema, usted necesita escribir un log-verosimilitud de la función que usted está tratando de ajustarse a los datos. Es evidente que se está suponiendo que el error se distribuye normalmente como en la simulación, por lo que el Registro de probabilidad es:
$Log\ Likelihood (Lambda,sd) = -\frac{n}{2} log(sd) - \frac{n}{2} log(2\pi)- \frac{(y-x^{Lambda})^2}{2sd} $
Usted necesita para maximizar la ecuación anterior mediante una optimización de rutina, tales como optim
en R
. El uso de la Hessian
de la matriz a partir de la optimización para evaluar la incertidumbre de la estimación del registro de probabilidad de la función es decir, del grado de inclinación o de cómo el plano de la curvatura de la función en el punto óptimo. Si la función es caro, lo que implica menos incertidumbres en el punto óptimo tendría una estrecha banda de confianza en sus estimaciones de los parámetros, por otro lado, si su piso que habría un amplio intervalo de confianza. Hesse, matriz de Información de Fisher le ayudan a calcular el error estándar y el intervalo de confianza.
Aquí es cómo usted lo hace en R:
set.seed(8345)
Lambda = 1/2.42
x = rbeta(1e4, shape1=2,shape2=2)
y = x^Lambda + rnorm(1e4,mean = 0, sd=.1)
plot(x,y)
## Write Log Likelihood function
log.lik <- function(theta,y,x){
Lam <- theta[1]
sigma2 <- theta[2]
# sample size
n <- length(y)
#error
e<-y-(x^Lam)
#log likelihood
logl<- -.5*n*log(2*pi)-.5*n*log(sigma2)-((t(e)%*%e)/(2*sigma2))
return(-logl) # R optim does minimize so to maximize multiply by -1
}
## Estimate Paramters thru maximum likelihood
max.lik <- optim(c(1,1), fn=log.lik, method = "L-BFGS-B", lower = c(0.00001,0.00001), hessian = T,y=y,x=x)
# Lambda
Lam <- max.lik$par[1]
#0.4107119
#Fisher Information MAtrix
fisher_info<-solve(max.lik$hessian)
prop_sigma<-sqrt(diag(fisher_info))
## Estimate 95% Confidence Interval
upper<-max.lik