tipos poblacional para muestras intervalos intervalo interpretacion grandes ejemplos confianza como calcular math language-agnostic statistics montecarlo

math - poblacional - intervalos de confianza para muestras grandes ejemplos



Calcular un intervalo de confianza medio sin almacenar todos los puntos de datos (6)

Aquí hay un artículo sobre cómo calcular la media y la desviación estándar en una sola pasada , sin almacenar ningún dato. Una vez que tenga estas dos estadísticas, puede estimar un intervalo de confianza. Un intervalo de confianza del 95% sería [media - 1.96 * stdev, media + 1.96 * stdev], suponiendo una distribución normal para sus datos y una gran cantidad de puntos de datos.

Para un número menor de puntos de datos, su intervalo de confianza sería [mean - c (n) * stdev, mean + c (n) * stdev] donde c (n) depende del tamaño de su muestra y su nivel de confianza. Para un nivel de confianza del 95%, estos son sus valores de c (n) para n = 2, 3, 4, ..., 30

12.70620, 4.302653, 3.182446, 2.776445, 2.570582, 2.446912, 2.364624, 2.306004, 2.262157, 2.228139, 2.200985, 2.178813, 2.160369, 2.144787, 2.131450, 2.119905, 2.109816, 2.100922, 2.093024, 2.085963, 2.079614, 2.073873, 2.068658, 2.063899, 2.059539, 2.055529, 2.051831, 2.048407, 2.045230

Estos números son g (0.025, n-1) donde g es la CDF inversa de la distribución t con n grados de libertad. Si quería un intervalo de confianza del 99%, reemplace 0.025 con 0.005. En general, para un nivel de confianza de 1-alfa, use alpha / 2.

Aquí está el comando R que generó las constantes arriba.

n = seq(2, 30); qt(0.025, n-1)

Aquí hay una publicación en el blog que explica por qué los números anteriores no son tan cercanos a 1.96 como cabría esperar.

Para n grande (ver más abajo cómo determinar qué es lo suficientemente grande), es seguro tratar, según el teorema del límite central, la distribución de la media de la muestra como normal (gaussiana), pero me gustaría un procedimiento que proporcione un intervalo de confianza para cualquier n . La forma de hacerlo es usar una distribución de Student T con n-1 grados de libertad.

Entonces, la pregunta es: dado un flujo de puntos de datos que usted recolecta o encuentra uno a la vez, ¿cómo calcula un intervalo de confianza c (por ejemplo, c=.95 ) en la media de los puntos de datos (sin almacenar todos los datos encontrados anteriormente)?

Otra forma de preguntar esto es: ¿cómo se hace un seguimiento del primer y segundo momento de una secuencia de datos sin almacenar todo el flujo?

PREGUNTA DE BONIFICACIÓN: ¿Puedes hacer un seguimiento de los momentos más altos sin almacenar toda la secuencia?


No desea acumular la suma de cuadrados. Las estadísticas resultantes son numéricamente inexactas: terminará restando dos números grandes y similares. Desea mantener la varianza, o la varianza (n-1) *, o algo así.

La forma directa es acumular los puntos de datos de forma incremental. La fórmula no es complicada ni difícil de derivar (ver el enlace de John D. Cook).

Una forma aún más precisa de hacerlo es combinar los puntos de datos de forma par recursiva. Puede hacer esto con memoria logarítmica en n: register k contiene estadísticas para 2 ^ k puntos de datos más antiguos, que se combinan con estadísticas para 2 ^ k puntos más nuevos para obtener estadísticas para 2 ^ (k + 1) puntos ...


Yo creo que puedes. Tendría que buscar en Google / Wikipidia, así que lo dejo como un ejercicio para el lector.


sigma = sqrt( (q - (s*s/n)) / (n-1) ) delta = t(1-c/2,n-1) * sigma / sqrt(n)

Donde t (x, n-1) es la distribución t con n-1 grados de libertad. si estás usando gsl

t = gsl_cdf_tdist_Qinv (c/2.0, n-1)

No es necesario almacenar ningún dato más allá de la suma de cuadrados. Ahora, puede tener un problema numérico porque la suma de cuadrados puede ser bastante grande. Puede usar la definición alternativa de s

sigma = sqrt(sum(( x_i - s/n )^2 / (n-1)))

y haz dos pases. Le recomiendo que considere usar la biblioteca científica de GNU o un paquete como R para ayudarlo a evitar problemas numéricos. Además, tenga cuidado con su uso del teorema del límite central. El abuso de él es en parte culpable de toda la crisis financiera que está ocurriendo en este momento.


[¡Muchísimas gracias a John D Cook por mucho de lo que aprendí al armar esta respuesta!]

Primero, aquí está la razón por la cual no se usa la suma de cuadrados: http://www.johndcook.com/blog/2008/09/26/

Lo que debes hacer en su lugar:

Mantenga un registro del recuento (n), la media (u) y la cantidad (s) a partir de la cual se puede determinar la varianza de la muestra y el error estándar. (Adaptado de http://www.johndcook.com/standard_deviation.html .)

Inicializar n = u = s = 0 .

Para cada nuevo punto de datos, x :

u0 = u; n ++; u += (x - u) / n; s += (x - u0) * (x - u);

La varianza muestral es entonces s/(n-1) , la varianza de la media muestral es s/(n-1)/n , y el error estándar de la media muestral es SE = sqrt(s/(n-1)/n) .

Queda por calcular el intervalo de confianza de Student-t c ( c en (0,1)):

u [plus or minus] SE*g((1-c)/2, n-1)

donde g es el cdf inverso (también conocido como cuantil) de la distribución de Student-t con media 0 y varianza 1, tomando una probabilidad y los grados de libertad (uno menos que el número de puntos de datos):

g(p,df) = sign(2*p-1)*sqrt(df)*sqrt(1/irib(1, -abs(2*p-1), df/2, 1/2) - 1)

donde irib es la función beta incompleta regularizada inversa:

irib(s0,s1,a,b) = z such that rib(s0,z,a,b) = s1

donde rib es la función beta incompleta regularizada:

rib(x0,x1,a,b) = B(x0,x1,a,b) / B(a,b)

donde B(a,b) es la función beta de Euler y B(x0,x1,a,b) es la función beta incompleta:

B(a,b) = Gamma(a)*Gamma(b)/Gamma(a+b) = integral_0^1 t^(a-1)*(1-t)^(b-1) dt B(x0,x1,a,b) = integral_x0^x1 t^(a-1)*(1-t)^(b-1) dt

Las bibliotecas numéricas / estadísticas típicas tendrán implementaciones de la función beta (o el cdf inverso de la distribución de Student-t directamente). Para C, el estándar de facto es la Biblioteca Científica Gnu (GSL). A menudo se da una versión de 3 argumentos de la función beta; la generalización a 4 argumentos es la siguiente:

B(x0,x1,a,b) = B(x1,a,b) - B(x0,a,b) rib(x0,x1,a,b) = rib(x1,a,b) - rib(x0,a,b)

Finalmente, aquí hay una implementación en Mathematica:

(* Take current {n,u,s} and new data point; return new {n,u,s}. *) update[{n_,u_,s_}, x_] := {n+1, u+(x-u)/(n+1), s+(x-u)(x-(u+(x-u)/(n+1)))} Needs["HypothesisTesting`"]; g[p_, df_] := InverseCDF[StudentTDistribution[df], p] (* Mean CI given n,u,s and confidence level c. *) mci[n_,u_,s_, c_:.95] := With[{d = Sqrt[s/(n-1)/n]*g[(1-c)/2, n-1]}, {u+d, u-d}]

Comparar con

StudentTCI[u, SE, n-1, ConfidenceLevel->c]

o, cuando toda la lista de puntos de datos está disponible,

MeanCI[list, ConfidenceLevel->c]

Finalmente, si no desea cargar bibliotecas matemáticas para cosas como la función beta, puede codificar una tabla de búsqueda para -g((1-c)/2, n-1) . Aquí está para c=.95 n=2..100 :

12,706204736174698, 4,302652729749464, 3,182446305283708, 2,7764451051977934, 2,570581835636314, 2,4469118511449666, 2,3646242515927853, 2,306004135204168, 2,262157162798205, 2,2281388519862735, 2,2009851600916384, 2,178812829667226, 2,1603686564627917, 2,1447866879178012, 2,131449545559774, 2,1199052992212533, 2,1098155778333156, 2,100922040241039, 2,093024054408307, 2,0859634472658626, 2,0796138447276835, 2,073873067904019, 2,0686576104190477, 2,0638985616280254, 2,0595385527532963, 2.05552943864287, 2,051830516480281, 2,048407141795243, 2,0452296421327034, 2,042272456301236, 2,039513446396408, 2,0369333434600976, 2,0345152974493392, 2,032244509317719, 2,030107928250338, 2,0280940009804462, 2,0261924630291066, 2,024394163911966, 2,022690920036762, 2,0210753903062715, 2,0195409704413745, 2,018081702818439, 2,016692199227822, 2,0153675744437627, 2,0141033888808457, 2,0128955989194246, 2,011740513729764, 2,0106347576242314, 2,0095752371292335, 2,0085591121007527, 2.007583770315835, 2.00 66468050616857, 2,005745995317864, 2,0048792881880577, 2,004044783289136, 2,0032407188478696, 2,002465459291016, 2,001717484145232, 2,000995378088259, 2,0002978220142578, 1,9996235849949402, 1,998971517033376, 1,9983405425207483, 1,997729654317692, 1,9971379083920013, 1,9965644189523084, 1,996008354025304, 1,9954689314298386, 1,994945415107228, 1,9944371117711894, 1,9939433678456229, 1,993463566661884, 1,9929971258898527, 1,9925434951809258, 1,992102154002232, 1,9916726096446793, 1,9912543953883763, 1,9908470688116922, 1,9904502102301198, 1,990063421254452, 1,989686323456895, 1,9893185571365664, 1,9889597801751728, 1,9886096669757192, 1,9882679074772156, 1,9879342062390228, 1,9876082815890748, 1,9872898648311672, 1,9869786995062702, 1,986674540703777, 1,986377154418625, 1,9860863169510985, 1,9858018143458114, 1,9855234418666061, 1,9852510035054973, 1,9849843115224508, 1,9847231860139618, 1,98446745450849, 1,9842169515863888

que se aproxima asintóticamente al CDF inverso de una distribución normal (0,1) para c=.95 , que es:

-sqrt(2)*InverseErf(-c) = 1.959963984540054235524594430520551527955550...

Ver http://mathworld.wolfram.com/InverseErf.html para la función inversa de erf() . Observe que g((1-.95)/2,n-1) no redondea a 1.96 hasta que haya al menos 474 puntos de datos. Se redondea a 2.0 cuando hay 29 puntos de datos.

Como regla general, debe usar Student-t en lugar de la aproximación normal para n hasta al menos 300, no 30 por sabiduría convencional. Cf. http://www.johndcook.com/blog/2008/11/12/ .

Consulte también "Mejora del conteo comprimido" por Ping Li de Cornell.


Creo que no tiene que preocuparse tanto por el tamaño de n porque pronto superará el número de 30, donde la distribución puede considerarse normal. Usar la recursión Bayesiana para hacer una inferencia posterior en la media de la población y los parámetros de varianza, asumiendo un modelo normal, es la mejor manera, si no quiere almacenar ningún punto de datos de muestras anteriores. Puede echar un vistazo a este documento para la inferencia conjunta de la media y la varianza, y específicamente las ecuaciones 38a, 38b y 38c.