Para ello existe un método estándar llamado método delta. Usted forma la inversa del hessiano de la log-verosimilitud wrt sus cuatro parámetros. Hay un parámetro extra para la varianza de de los residuos, pero no juega un papel en estos cálculos. A continuación, se calcula la respuesta predicha para los valores deseados de la variable independiente y se calcula su gradiente (la derivada con respecto a estos cuatro parámetros). estos cuatro parámetros. Llamamos a la inversa del hessiano $I$ y el vector gradiente $g$ . Se forma el producto vectorial matricial $$-g^tIg$$ Esto le da la varianza estimada para esa variable dependiente. Saque la raíz cuadrada para obtener la desviación estándar estimada. límites de confianza son el valor predicho +- dos desviaciones estándar. Para el caso especial de una regresión no lineal, puede corregir los grados de libertad. Usted tiene 10 observaciones y 4 parámetros, por lo que puede aumentar la estimación de la varianza en el modelo multiplicando por 10/6. Varios paquetes de software lo harán por usted. Escribí tu modelo en AD Model en AD Model Builder y lo ajusté y calculé las varianzas (sin modificar). Serán ligeramente diferentes de las suyas porque tuve que adivinar un poco los valores.
estimate std dev
10 pred_E -4.8495e+01 7.5100e-03
11 pred_E -4.8810e+01 7.9983e-03
12 pred_E -4.9028e+01 7.5675e-03
13 pred_E -4.9224e+01 6.4801e-03
14 pred_E -4.9303e+01 6.8034e-03
15 pred_E -4.9328e+01 7.1726e-03
16 pred_E -4.9329e+01 7.0249e-03
17 pred_E -4.9297e+01 7.1977e-03
18 pred_E -4.9252e+01 1.1615e-02
Esto puede hacerse para cualquier variable dependiente en el Constructor de Modelos AD. Se declara una variable en el lugar apropiado del código, así
sdreport_number dep
y escribe el código para evaluar la variable dependiente así
dep=sqrt(V0-cube(Bp0)/(1+2*max(V)));
Obsérvese que esto se evalúa para un valor de la variable independiente 2 veces el mayor observado en el ajuste del modelo. Si se ajusta el modelo, se obtiene la desviación estándar de esta variable dependiente
19 dep 7.2535e+00 1.0980e-01
He modificado el programa para incluir el código para calcular la límites de confianza para la función entalpía-volumen El archivo de código (TPL) tiene el siguiente aspecto
DATA_SECTION
init_int nobs
init_matrix data(1,nobs,1,2)
vector E
vector V
number Vmean
LOC_CALCS
E=column(data,2);
V=column(data,1);
Vmean=mean(V);
PARAMETER_SECTION
init_number E0
init_number log_V0_coff(2)
init_number log_B0(3)
init_number log_Bp0(3)
init_bounded_number a(.9,1.1)
sdreport_number V0
sdreport_number B0
sdreport_number Bp0
sdreport_vector pred_E(1,nobs)
sdreport_vector P(1,nobs)
sdreport_vector H(1,nobs)
sdreport_number dep
objective_function_value f
PROCEDURE_SECTION
V0=exp(log_V0_coff)*Vmean;
B0=exp(log_B0);
Bp0=exp(log_Bp0);
if (current_phase()<4)
f+=square(log_V0_coff) +square(log_B0);
dvar_vector sv=pow(V0/V,0.66666667);
pred_E=E0 + 9*V0*B0*(cube(sv-1.0)*Bp0
+ elem_prod(square(sv-1.0),(6-4*sv)));
dvar_vector r2=square(E-pred_E);
dvariable vhat=sum(r2)/nobs;
dvariable v=a*vhat;
f=0.5*nobs*log(v)+sum(r2)/(2.0*v);
// code to calculate the enthalpy-volume function
double delta=1.e-4;
dvar_vector svp=pow(V0/(V+delta),0.66666667);
dvar_vector svm=pow(V0/(V-delta),0.66666667);
P = -((9*V0*B0*(cube(svp-1.0)*Bp0
+ elem_prod(square(svp-1.0),(6-4*svp))))
-(9*V0*B0*(cube(svm-1.0)*Bp0
+ elem_prod(square(svm-1.0),(6-4*svm)))))/(2.0*delta);
H=E+elem_prod(P,V);
dep=sqrt(V0-cube(Bp0)/(1+2*max(V)));
Luego volví a ajustar el modelo para obtener los desvíos estándar para las estimaciones de H.
29 H -3.9550e+01 5.9163e-01
30 H -4.1554e+01 2.8707e-01
31 H -4.3844e+01 1.2333e-01
32 H -4.5212e+01 1.5011e-01
33 H -4.6859e+01 1.5434e-01
34 H -4.7813e+01 1.2679e-01
35 H -4.8808e+01 1.1036e-01
36 H -4.9626e+01 1.8374e-01
37 H -5.0186e+01 2.8421e-01
38 H -5.0806e+01 4.3179e-01
Se han calculado para los valores de V observados, pero podrían calcularse fácilmente para cualquier valor de V.
Se ha señalado que en realidad se trata de un modelo lineal para el que existe un sencillo código R para realizar la estimación de los parámetros mediante OLS. Esto es muy atractivo, especialmente para los usuarios ingenuos. Sin embargo, desde el trabajo de Huber, hace más de treinta años, sabemos, o deberíamos saber, que casi siempre hay que sustituir OLS por una alternativa moderadamente robusta. La razón por la que esto no se hace de forma rutinaria creo que es que los métodos robustos son inherentemente no lineales. Desde este punto de vista, los métodos OLS simples y atractivos en R son más una trampa que una característica. Una ventaja del enfoque del Constructor de Modelos AD es su soporte incorporado para la modelización no lineal. Para cambiar el código de mínimos cuadrados a una mezcla normal robusta, sólo hay que cambiar una línea del código línea del código. La línea
f=0.5*nobs*log(v)+sum(r2)/(2.0*v);
se cambia a
f=0.5*nobs*log(v)
-sum(log(0.95*exp(-0.5*r2/v) + 0.05/3.0*exp(-0.5*r2/(9.0*v))));
La cantidad de sobredispersión en los modelos se mide por el parámetro a. Si a es igual a 1,0, la varianza es la misma que la del modelo normal. Si la varianza está inflada por los valores atípicos, se espera que a sea inferior a 1,0. Para estos datos, la estimación de a es de aproximadamente 0,23, por lo que la varianza es aproximadamente 1/4 de la varianza del modelo normal. La interpretación es que los valores atípicos han aumentado la estimación de la varianza en un factor de aproximadamente 4. El efecto de esto es aumentar el tamaño de los límites de confianza para los parámetros del modelo OLS. Esto representa una pérdida de eficiencia. Para el modelo de mezcla normal, las desviaciones estándar estimadas para la función entalpía-volumen son
29 H -3.9777e+01 3.3845e-01
30 H -4.1566e+01 1.6179e-01
31 H -4.3688e+01 7.6799e-02
32 H -4.5018e+01 9.4855e-02
33 H -4.6684e+01 9.5829e-02
34 H -4.7688e+01 7.7409e-02
35 H -4.8772e+01 6.2781e-02
36 H -4.9702e+01 1.0411e-01
37 H -5.0362e+01 1.6380e-01
38 H -5.1114e+01 2.5164e-01
Se observa que hay pequeños cambios en las estimaciones puntuales, mientras que los límites de confianza se han reducido a cerca del 60% de los producidos por OLS.
El punto principal que quiero hacer es que todos los cálculos modificados ocurren automáticamente una vez que uno cambia la única línea de código en el archivo TPL.
0 votos
Ninguno de sus parámetros es un exponente, lo cual es bueno. ¿Qué software de NLS has utilizado? La mayoría de ellos devuelven una estimación de la incertidumbre paramétrica (que puede ser completamente irreal si sus parámetros son exponentes, pero este no es su caso).
0 votos
No hay ninguna A en la parte derecha de tu ecuación pero aparece en tu gráfico. Cuando dice "cuatro parámetros", ¿se refiere a parámetros en el sentido estadístico (en cuyo caso, dónde están sus IV) o quiere decir variables (en cuyo caso, dónde están sus parámetros)? Por favor, aclare el papel de los símbolos: ¿qué se mide y qué se desconoce?
1 votos
Creo que la V es A^3. Eso es lo que usé y mi parcela era idéntica a la suya.
0 votos
@Glen_b Acabo de asumir que el eje Y es E en la función Birch-Murnaghan mientras que el eje x es V. Si asumes eso obtienes algo parecido a lo que él tiene.
0 votos
Ah, espera, por fin lo entiendo. $E()$ no es un operador de expectativa (como esperaría ver en el LHS de una ecuación sin un término de error en el RHS), $E$ es la variable de respuesta escrita como una función de la forma $y(x)$ . GRAN PISTA para todos: No muestren una ecuación con $E()$ a la izquierda de una ecuación de regresión a un estadístico sin definir cuidadosamente lo que quieres decir, porque probablemente asumirá que es una expectativa.
0 votos
@thyme He hecho algunas pequeñas ediciones para ayudar a desambiguar su ecuación. Por favor, comprueba que no he alterado el significado de nada