2 votos

¿Cómo calcular el intervalo de confianza de la media de las medias? (2)

Nota: esta pregunta es diferente a este otro de la siguiente manera:

  • Ese pide la media CI de las medias.
  • Este se pregunta por la media de CI de las medias, sólo desde la perspectiva de las variaciones dentro de las pequeñas observaciones de cada sistema, y no de las variaciones globales entre los sistemas evaluados.

Por ejemplo, digamos que tenemos estas matrices de muestras:

  • $a = [56,0,57]$ .
  • $b = [227,265,263]$ .
  • $c = [448,406,488]$ .

Dónde:

  • Matriz $a$ tiene 3 muestras del proceso A.
  • Matriz $b$ tiene 3 muestras del proceso B.
  • Matriz $c$ tiene 3 muestras del proceso C.

Y su muestra estadísticas (media $\bar x$ , varianza $\sigma_x^2$ , stdev $\sigma_x$ , error estándar $\text{SE}_{\bar x}$ ) como he calculado a partir de las matrices anteriores son:

  • $\bar a=37.667$ , $\sigma^2_a=1064.333$ , $\sigma_a=32.6241$ , $\text{SE}_{\bar a}=\frac{\sigma_a}{\sqrt{3}} = 18.8355$ .
  • $\bar b=251.667$ , $\sigma^2_b=457.333$ , $\sigma_b=21.3854$ , $\text{SE}_{\bar b}=\frac{\sigma_b}{\sqrt{3}} = 12.3468$ .
  • $\bar c=447.333$ , $\sigma^2_c=1681.333$ , $\sigma_c=41.004$ , $\text{SE}_{\bar c}=\frac{\sigma_c}{\sqrt{3}} = 23.6737$ .

Ahora, calculo el $0.95$ intervalos de confianza de cada matriz como se indica a continuación:

$$ \text{CI}_{\bar a} = 4.303 \times \text{SE}_{\bar a} = \pm 81.0428 $$

$$ \text{CI}_{\bar b} = 4.303 \times \text{SE}_{\bar b} = \pm 53.1242 $$

$$ \text{CI}_{\bar c} = 4.303 \times \text{SE}_{\bar c} = \pm 101.8597 $$

Hasta ahora todo parece sencillo.

La pregunta:

Ahora supongamos que calculo el media de las medias . Llamémoslo $\overline {abc} = \frac{\bar a + \bar b + \bar c}{3} = 245.556$

  • ¿Cuáles son los intervalos de confianza de la media de las medias $\overline{abc}$ ? Llamémoslo $\text{CI}_{\overline{abc}}$ ?

No quiero $\text{CI}_{\overline{abc}}$ para tener en cuenta las variaciones entre los sistemas A, B y C. Sólo quiero que tenga en cuenta las variaciones dentro de ellos.

Así, por ejemplo, las medias de los sistemas A, B y C podrían variar drásticamente (porque son sistemas muy diferentes). Sin embargo, las muestras dentro de cada media podrían no variar drásticamente (por lo tanto, baja $\text{CI}_{\bar x}$ por cada sistema). Por lo tanto, espero $\text{CI}_{\overline{abc}}$ sea pequeño porque el $\text{CI}_{\bar x}$ es pequeño (para cualquier $x$ ).

Mi intento:

Código Python:

import scipy
import scipy.stats

# data
a = [56, 0, 57]
b = [227, 265, 263]
c = [448, 406, 488]

# how many SE needed for a CI of .95
h = scipy.stats.t._ppf((1+0.95)/2.0, len(a)-1)

# compute many means
means = []
for i in range(len(a)):
    mean = scipy.mean(a[i] + b[i] + c[i])
    means.append(mean)

# find the CI of those many means
means_se = scipy.stats.sem(means)
means_ci = h * means_se
print "mean of means CI is: +/- " + str(means_ci)

La salida:

mean of means CI is: +/- 170.599562802

Obsérvese que esta media de medios CI que sólo tiene en cuenta intra -La variación del proceso es diferente a la media de la IC de los medios, que sólo tiene en cuenta inter -variación del proceso. Aquí está la otra IC (nótese que es mucho más grande):

import scipy
import scipy.stats

# data
a = [56, 0, 57]
b = [227, 265, 263]
c = [448, 406, 488]

# how many SE needed for a CI of .95
h = scipy.stats.t._ppf((1+0.95)/2.0, 2)

mean_a = scipy.mean(a)
mean_b = scipy.mean(b)
mean_c = scipy.mean(c)

means_se = scipy.stats.sem([mean_a,mean_b,mean_c])
means_ci = h * means_se
print "other mean of means CI is: +/- " + str(means_ci)

La salida:

other mean of means CI is: +/- 509.004022253

1voto

Peter Puntos 119

Conozco dos enfoques. Uno es propagación de la incertidumbre . Para python la propagación lineal de la incertidumbre se implementa en el uncertainties paquete :

import uncertainties

ma = uncertainties.ufloat(scipy.mean(a), scipy.stats.sem(a))
mb = uncertainties.ufloat(scipy.mean(b), scipy.stats.sem(b))
mc = uncertainties.ufloat(scipy.mean(c), scipy.stats.sem(c))

print scipy.mean([ma, mb, mc])

Lo que da 246 +- 11.

El otro enfoque es bootstrapping que quizá sea similar a su primer enfoque. Un esquema de remuestreo de casos podría, por ejemplo, implementarse así:

import scipy
import scipy.stats

# data
a = [56, 0, 57]
b = [227, 265, 263]
c = [448, 406, 488]

N = 1000
means = []
for i in range(N):
    mean = scipy.mean(scipy.mean(scipy.random.choice(a, len(a))) +\
                      scipy.mean(scipy.random.choice(b, len(b))) +\
                      scipy.mean(scipy.random.choice(c, len(c)))
                                )
    means.append(mean)
print scipy.mean(means), scipy.std(means)

Lo que da algo así como 245 +-9.

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