2 votos

Varianza residual ODR y chi^2 reducida: ¿las incertidumbres beta representan intervalos de confianza?

Estoy buscando el relación entre la varianza residual de una regresión de distancia ortogonal ( ODR ) (tal y como se ha implementado en scipy.odr ) y reducido $\chi^2$ .

Estoy obteniendo valores similares para algunos de mis casos de prueba, lo que atribuyo a la incertidumbre en los valores x que no tengo en cuenta - vi una respuesta validar esto es realmente $\chi^2$ .

Finalmente, cómo se relaciona la desviación beta estándar de los parámetros con sus intervalos de confianza, en términos de percentiles ? Es decir, en qué medida la varianza residual ( $\chi^2$ ?) que se permite variar al calcular este valor ( sd_beta ), y ¿cuál es el intervalo asociado?

Mis datos son de la forma x,dx,y,dy con un ajuste lineal simple. Las respuestas que encuentro son, o bien demasiado simples (la gente sólo busca lo que se puede citar como incertidumbre), o bien demasiado complejas (las matemáticas implicadas en el procedimiento general). Yo busco algo intermedio, relacionado con el algoritmo específico.

2voto

Jacek Lakomiec Puntos 46

Como este sitio está bastante adormecido, esto es lo que he encontrado. No soy en absoluto un experto, así que por favor modifique mi/sugiera mejoras a/añada su propia solución.

El scipy.odr doc es muy limitado, por desgracia, pero indagando he encontrado por fin el guía original de odrpack por Paul T. Boggs, Richard H. Byrd, Janet E. Rogers y Robert B. Schnabel del NIST, NISTIR 4834, 1992.

Página 74, sobre la matriz de covarianza explica cómo calcular el intervalo de confianza a partir de la desviación estándar del parámetro ( sd_beta en su scipy Resultado de la ODR, devuelto por run .). Se trata del elemento de la matriz de covarianza diagonal escalado que a su vez está escalado por la varianza residual (que es casi $\chi^2/DOF$ por lo que veo, véase también el enlace en cuestión), o al menos debería serlo - al publicar esto la matriz de covarianza en scipy.odr no está escalado por la varianza residual, lo cual es un error. sd_beta es bueno sin embargo.

Toma esto, y multiplícalo por el prueba t de student para el intervalo de confianza que buscas y los grados de libertad. El enlace es a la Wikipedia, que por lo que veo tiene una buena tabla, aunque es fácil encontrar fuentes más sólidas y extensas - Se pueden calcular de antemano, o tomar directamente de la tabla.

La versión corta:

  1. Diga r=odr.ODR(data,model,beta0=(initial params)).run()

  2. Busque el valor apropiado de la T de Student para el intervalo de confianza que desea y dado su DOF (para un sistema normal esto es la cantidad de puntos de datos - cantidad de parámetros (no fijos) en su modelo, almacenado en r.iwork[-15] ver página 94 IWORK(IDFI)) sólo la tabla T del estudiante de Google, o utilizar https://en.wikipedia.org/wiki/Student%27s_t-distribution#Table_of_selected_values . EDITAR : scipy tiene algo incorporado, ver más abajo.

  3. Digamos que quiere un intervalo de confianza del 99% para dos grados de libertad, obtendría t=9.925 .

  4. Intervalo de confianza para el parámetro i está dada por:

    r.beta[i]+-t*r.sd_beta[i]

Por lo tanto, el intervalo de confianza no se encuentra directamente variando la varianza residual, sino que se vincula a ella a través del parámetro std.

Obtención del valor t

Debería haber adivinado scipy tiene algo tan trivial incorporado:

>>>from scipy.stats import t as studentt
>>>studentt.interval(0.95,9)
(-2.2621571627409915, 2.2621571627409915)

daría el valor t apropiado para la región de confianza del 95% (doble cara) con 9 DOF - 2,262.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X