Fiabilidad de una curva ajustada?

11

Me gustaría estimar la incertidumbre o la fiabilidad de una curva ajustada. Intencionalmente no nombro una cantidad matemática precisa que estoy buscando, ya que no sé qué es.

Aquí (energía) es la variable dependiente (respuesta) y (volumen) es la variable independiente. Me gustaría encontrar la curva de Energía-Volumen, , de algún material. Entonces hice algunos cálculos con un programa de computadora de química cuántica para obtener la energía para algunos volúmenes de muestra (círculos verdes en la gráfica).V E ( V )EVE(V)

Luego ajusté estas muestras de datos con la función Birch-Murnaghan : que depende de cuatro parámetros: . También supongo que esta es la función de ajuste correcta, por lo que todos los errores provienen del ruido de las muestras. En lo que sigue, la función ajustada se puede escribir como una función de .E 0 , V 0 , B 0 , B ' 0 ( E ) V

E(E|V)=E0+9V0B016{[(V0V)231]3B0+[(V0V)231]2[64(V0V)23]},
E0,V0,B0,B0(E^)V

Aquí puede ver el resultado (ajuste con un algoritmo de mínimos cuadrados). La variable de eje y es y la variable del eje x es . La línea azul es el ajuste y los círculos verdes son los puntos de muestra.VEV

Ajuste de abedul-Murnaghan (azul) de la muestra (verde)

Ahora necesito alguna medida de la confiabilidad (en el mejor de los casos, dependiendo del volumen) de esta curva ajustada, , porque la necesito para calcular cantidades adicionales como presiones de transición o entalpías.E^(V)

Mi intuición me dice que la curva ajustada es más confiable en el medio, por lo que supongo que la incertidumbre (por ejemplo, el rango de incertidumbre) debería aumentar cerca del final de los datos de la muestra, como en este bosquejo: ingrese la descripción de la imagen aquí

Sin embargo, ¿qué tipo de medida estoy buscando y cómo puedo calcularlo?

Para ser precisos, en realidad solo hay una fuente de error aquí: las muestras calculadas son ruidosas debido a los límites computacionales. Entonces, si calculara un conjunto denso de muestras de datos, formarían una curva irregular.

Mi idea para encontrar la estimación de incertidumbre deseada es calcular el siguiente "error" basado en los parámetros a medida que lo aprende en la escuela ( propagación de la incertidumbre ):

ΔE0,ΔV0,ΔB0ΔB0

ΔE(V)=(E(V)E0ΔE0)2+(E(V)V0ΔV0)2+(E(V)B0ΔB0)2+(E(V)B0ΔB0)2
El software de ajuste proporciona y .ΔE0,ΔV0,ΔB0ΔB0

¿Es un enfoque aceptable o lo estoy haciendo mal?

PD: Sé que también podría resumir los cuadrados de los residuos entre mis muestras de datos y la curva para obtener algún tipo de "error estándar", pero esto no depende del volumen.

tomillo
fuente
ninguno de sus parámetros es un exponente, lo cual es bueno. ¿Qué software de NLS usaste? La mayoría devolverá una estimación de la incertidumbre paramétrica (que puede ser completamente poco realista si sus parámetros son exponentes, pero este no es su caso).
DeltaIV
No hay una A en el lado derecho de su ecuación, pero aparece en su diagrama. 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 se refiere a variables (en cuyo caso, dónde están sus parámetros)? Por favor, aclare los roles de los símbolos: ¿qué se mide y cuáles son las incógnitas?
Glen_b -Reinstalar Monica
1
Creo que la V es A ^ 3. eso es lo que usé y mi trama parecía idéntica a la suya.
Dave Fournier
@Glen_b Supuse que el eje Y es E en la función Birch-Murnaghan mientras que el eje x es V. Los cuatro parámetros son los cuatro parámetros en la función Birch-Murnaghan. Si asumes que obtienes algo que se parece a lo que él tiene.
Dave Fournier
Ah, espera, finalmente lo entiendo. 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), es la variable de respuesta escrita como una función en la forma . CONSEJO GRANDE para todos: no muestres una ecuación con a la izquierda de una ecuación de regresión a un estadístico sin definir cuidadosamente lo que quieres decir, porque probablemente supondrán que es una expectativa. E()Ey(x)E()
Glen_b -Reinstala a Monica el

Respuestas:

8

¡Este es un problema ordinario de mínimos cuadrados!

Definiendo

x=V2/3, w=V01/3,

el modelo puede ser reescrito

E(E|V)=β0+β1x+β2x2+β3x3

donde los coeficientes están relacionados algebraicamente con los coeficientes originales a través deβ=(βi)

16β=(16E0+54B0w39B0B0w3144B0w5+27B0B0w5126B0w727B0B0w736B0w9+9B0B0w9).

Esto es sencillo de resolver algebraicamente o numéricamente: elija la solución para la cual y son positivos. La única razón para hacer esto es obtener estimaciones de , y y verificar que sean físicamente significativas. Todos los análisis del ajuste se pueden llevar a cabo en términos de . w B 0 , B 0 , w E 0 βB0,B0wB0,B0,wE0β

Este enfoque no solo es mucho más simple que el ajuste no lineal, sino que también es más preciso: la matriz de varianza-covarianza para devuelta por un ajuste no lineal es solo una aproximación cuadrática local a la distribución de muestreo de estos parámetros, mientras que (para errores distribuidos normalmente en la medición de , de todos modos) los resultados de OLS no son aproximaciones.E(E0,B0,B0,V0)E

Los intervalos de confianza, los intervalos de predicción, etc. pueden obtenerse de la manera habitual sin necesidad de encontrar estos valores: calcúlelos en términos de las estimaciones y su matriz de varianza-covarianza. (¡Incluso Excel podría hacer esto!) Aquí hay un ejemplo, seguido del código (simple) que lo produjo.β^R

Figura

#
# The data.
#
X <- data.frame(V=c(41, 43, 46, 48, 51, 53, 55.5, 58, 60, 62.5),
                E=c(-48.05, -48.5, -48.8, -49.03, -49.2, -49.3, -49.35, 
                    -49.34, -49.31, -49.27))
#
# OLS regression.
#
fit <- lm(E ~ I(V^(-2/3)) + I(V^(-4/3)) + I(V^(-6/3)), data=X)
summary(fit)
beta <- coef(fit)
#
# Prediction, including standard errors of prediction.
#
V0 <- seq(40, 65)
y <- predict(fit, se.fit=TRUE, newdata=data.frame(V=V0))
#
# Plot the data, the fit, and a three-SEP band.
#
plot(X$V, X$E, xlab="Volume", ylab="Energy", bty="n", xlim=c(40, 60))
polygon(c(V0, rev(V0)), c(y$fit + 3*y$se.fit, rev(y$fit - 3*y$se.fit)),
        border=NA, col="#f0f0f0")
curve(outer(x^(-2/3), 0:3, `^`) %*% beta, add=TRUE, col="Red", lwd=2)
points(X$V, X$E)

Si está interesado en la distribución conjunta de las estimaciones de parámetros originales, entonces es fácil simular a partir de la solución OLS: simplemente genere realizaciones normales multivariadas de y conviértalas en los parámetros. Aquí hay una matriz de diagrama de dispersión de 2000 de tales realizaciones. La fuerte curvilinealidad muestra por qué es probable que el método Delta dé malos resultados.β

Figura 2

whuber
fuente
1
Si bien es cierto que los algoritmos para ajustar modelos lineales son mucho más estables numéricamente que los de los modelos no lineales, no es cierto que exista una diferencia en la precisión de los diagnósticos siempre que el algoritmo de ajuste no lineal converja. Lo verifiqué y tenemos la misma suma de cuadrados residual de al menos 4 higos sig. Además, la parametrización lineal que elija está muy confundida, de modo que ninguno de los parámetros es significativo según la prueba t. Todos los míos lo son. No es realmente un gran problema, pero es divertido y puede confundir al joven jugador.
Dave Fournier
Además, supongo que no respondió la pregunta del OP ya que ella dijo que quería algo así como límites de confianza para la función de volumen de entalpía
dave fournier el
1
@Dave Esos son puntos reflexivos, gracias. En un problema físico, a uno normalmente no le interesa la importancia: la teoría implica todas las variables. En cambio, uno se preocupa por estimar los valores. Aunque ambos enfoques deberían alcanzar la misma pérdida mínima (suma de cuadrados de residuos), OLS produce distribuciones correctas para la varianza muestral de sus parámetros. El enfoque no lineal no. Es preciso aplicar la transformación de la distribución de a , pero el uso de covarianzas de es solo una aproximación. β(E0,)(E^0)
whuber
Su modelo y el mío son idénticos independientemente de la parametrización. (Estoy hablando del modelo OLS). Es cierto que si un parámetro particular ingresa al modelo linealmente, las desviaciones estándar producen mejores límites de confianza para ese parámetro. Las desviaciones estándar obtenidas a través del método delta serán las mismas si se usa para parametrizar el modelo o si se resuelve como una variable dependiente. En este caso, la variable dependiente de interés es la función de volumen de entalpía y su método delta std dev será el mismo si uno usa su parametrización o la mía.
Dave Fournier
1
@Dave Estoy de acuerdo: los modelos son los mismos pero con diferentes parámetros. Las ventajas de la formulación de OLS se extienden al hecho de que iid Los errores normales en la respuesta se traducen en una solución exacta para la distribución de las estimaciones de parámetros , que se convierte fácilmente en una estimación de la distribución de estimaciones de cuatro dimensiones completa. de los parámetros originales. Aunque esto podría hacerse utilizando la parametrización original, eso requeriría más trabajo numérico. Además, las ventajas conceptuales de ver que el modelo original es solo OLS disfrazado son importantes. β^
whuber
3

Hay un enfoque estándar para esto llamado método delta. Usted forma el inverso de la arpillera del log-verosimilitud de sus cuatro parámetros. Hay un parámetro adicional para la varianza de los residuos, pero no juega un papel en estos cálculos. Luego calcula la respuesta pronosticada para los valores deseados de la variable independiente y calcula su gradiente (la derivada wrt) de estos cuatro parámetros. Llame al inverso del Hessian y el vector de gradiente . Usted forma el producto matriz vectorial Ig

gtIg
Esto le da la varianza estimada para esa variable dependiente. Tome la raíz cuadrada para obtener la desviación estándar estimada. entonces los límites de confianza son el valor predicho + - dos desviaciones estándar. Esto es algo de probabilidad estándar. para el caso especial de una regresión no lineal, puede corregir los grados de libertad. Tiene 10 observaciones y 4 parámetros para que pueda aumentar la estimación de la varianza en el modelo al multiplicar por 10/6. Varios paquetes de software harán esto por usted. Escribí su modelo en AD Model en AD Model Builder y lo ajusté y calculé las variaciones (no modificadas). Serán ligeramente diferentes a los suyos 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 se puede hacer para cualquier variable dependiente en AD Model Builder. Uno declara una variable en el lugar apropiado en el código como este

   sdreport_number dep

y escribe el código que evalúa la variable dependiente como esta

dep=sqrt(V0-cube(Bp0)/(1+2*max(V)));

Tenga en cuenta que esto se evalúa para un valor de la variable independiente 2 veces la mayor observada en el ajuste del modelo. Ajuste el modelo y se obtiene la desviación estándar para esta variable dependiente

19   dep          7.2535e+00 1.0980e-01

Modifiqué el programa para incluir código para calcular los límites de confianza para la función de volumen de entalpía. El archivo de código (TPL) se parece a

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 instalar el modelo para obtener los desarrolladores 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

Estos se calculan para sus valores de V observados, pero podrían calcularse fácilmente para cualquier valor de V.

Se ha señalado que este es en realidad un modelo lineal para el que existe un código R simple para realizar la estimación de parámetros a través de OLS. Esto es muy atractivo especialmente para usuarios ingenuos. Sin embargo, desde el trabajo de Huber hace más de treinta años, sabemos o debemos saber que uno debería reemplazar casi siempre OLS con una alternativa moderadamente robusta. Creo que la razón por la que esto no se hace rutinariamente 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 AD Model Builder es su soporte incorporado para el modelado no lineal. Para cambiar el código de mínimos cuadrados a una mezcla normal robusta, solo se necesita cambiar una 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 con el parámetro a. Si a es igual a 1.0, la varianza es la misma que para el modelo normal. Si hay una inflación de la varianza por valores atípicos, esperamos que a sea menor que 1.0. Para estos datos, la estimación de a es de aproximadamente 0.23, de modo que la varianza es aproximadamente 1/4 de la varianza para el 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 para el modelo OLS. Esto representa una pérdida de eficiencia. Para el modelo de mezcla normal, las desviaciones estándar estimadas para la función de volumen de entalpía 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

Uno ve que hay pequeños cambios en las estimaciones puntuales, mientras que los límites de confianza se han reducido a aproximadamente el 60% de los producidos por OLS.

El punto principal que quiero destacar es que todos los cálculos modificados ocurren automáticamente una vez que uno cambia la línea de código en el archivo TPL.

Dave Fournier
fuente
2
Para beneficio de @ tomillo, me gustaría señalar que el "método delta" es esencialmente el mismo procedimiento que la "propagación de la incertidumbre" con la que está familiarizado y que comúnmente se enseña a los científicos, al menos, ellos son el mismo procedimiento cuando este último se realiza correctamente. Una advertencia es que la fórmula publicada en la pregunta ignora las correlaciones entre los valores estimados de los parámetros. Ignorar las correlaciones es equivalente a considerar solo los elementos diagonales de en el método delta. I
jwimberley
1
También para @thyme, la propagación de incertidumbres / el método delta solo produce la incertidumbre en . Además de esto, hay cualquier sesgo / variación debido al ruido. Supongo que está haciendo predicciones sobre muestras físicas, cuya energía / entalpía / otras cantidades termodinámicas no tienen el mismo ruido que en su software de simulación, pero en cualquier caso esto agrega una fuente adicional de variación además de la varianza en o que se debe a la incertidumbre del ajuste. E(EV)E(EV)E(HV)
jwimberley
1
@jwimberley, básicamente estás diciendo que Dave Fourier dio la fórmula para el intervalo de confianza de la media (condicional), mientras que el tomillo puede estar interesado en el intervalo de predicción para una nueva observación. Es fácil calcular esto último para OLS. ¿Cómo se calcula en este caso?
DeltaIV
1
@DeltaIV Aún sería fácil en este caso: si el modelo de mínimos cuadrados no lineal es correcto, entonces los residuos del ajuste se distribuyen como . Entonces, la varianza extra en el intervalo de predicción es la varianza de los residuos de ajuste. Esto está relacionado con la idea en el post-script de la respuesta (que no depende de porque el modelo de ajuste no es heterocedastico). Sin embargo, lo más importante es que en el ajuste proviene de límites computacionales, mientras que en el mundo proviene de fluctuaciones termodinámicas, que probablemente no son comparables. E=f(V)+ϵEE^ϵVϵϵ
jwimberley
1
@jwimberley Solo mostré los límites de confianza para los valores predichos correspondientes a los valores V observados simplemente porque estaban disponibles. He editado mi respuesta para mostrar cómo obtener límites de confianza para cualquier variable dependiente.
Dave Fournier
0

La validación cruzada es una forma simple de estimar la confiabilidad de su curva: https://en.wikipedia.org/wiki/Cross-validation_(statistics)

La propagación de la incertidumbre con diferenciales parciales es excelente si realmente conoce y . Sin embargo, el programa que está utilizando solo muestra errores de ajuste (?). Serán demasiado optimistas (poco realistas). Δ B ΔE0,ΔV0,ΔB0ΔB

Puede calcular el error de validación de 1 vez dejando uno de sus puntos alejado del ajuste y utilizando la curva ajustada para predecir el valor del punto que quedó fuera. Repita esto para todos los puntos para que cada uno se quede lejos una vez. Luego, calcule el error de validación de su curva final (curva ajustada con todos los puntos) como un promedio de errores de predicción.

Esto solo le dirá qué tan sensible es su modelo para cualquier nuevo punto de datos. Por ejemplo, no le dirá cuán inexacto es su modelo de energía. Sin embargo, esto será una estimación de error mucho más realista, un simple error de ajuste.

Además, puede trazar errores de predicción en función del volumen si lo desea.

Jman
fuente