de van utilizando scipy es exactamente correcto y el uso de las funciones scipy.stats.ttest_*
es muy conveniente.
Pero llegué a esta página buscando una solución con numpy puro, como se indica en el encabezado, para evitar la dependencia scipy. Con este fin, permítanme señalar el ejemplo dado aquí: https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.standard_t.html
El problema principal es que numpy no tiene funciones de distribución acumulativa, por lo tanto, mi conclusión es que realmente debería usar scipy. De todos modos, usando numpy es posible:
De la pregunta original supongo que quiere comparar sus conjuntos de datos y juzgar con una prueba t si hay una desviación significativa? Además, ¿las muestras están emparejadas? (Ver https://en.wikipedia.org/wiki/Student%27s_t-test#Unpaired_and_paired_two-sample_t-tests) En ese caso, se puede calcular el t y el valor p de esta manera:
import numpy as np
sample1 = np.array([55.0, 55.0, 47.0, 47.0, 55.0, 55.0, 55.0, 63.0])
sample2 = np.array([54.0, 56.0, 48.0, 46.0, 56.0, 56.0, 55.0, 62.0])
# paired sample -> the difference has mean 0
difference = sample1 - sample2
# the t-value is easily computed with numpy
t = (np.mean(difference))/(difference.std(ddof=1)/np.sqrt(len(difference)))
# unfortunately, numpy does not have a build in CDF
# here is a ridiculous work-around integrating by sampling
s = np.random.standard_t(len(difference), size=100000)
p = np.sum(s<t)/float(len(s))
# using a two-sided test
print("There is a {} % probability that the paired samples stem from distributions with the same means.".format(2 * min(p, 1 - p) * 100))
Esto imprimirá There is a 73.028 % probability that the paired samples stem from distributions with the same means.
Puesto que esto es muy por encima de cualquier intervalo de confianza en su sano juicio (por ejemplo 5%), que debiera no concluir nada para el caso concreto.
gracias por responder. parece tomar una variable aleatoria. ¿Tengo que generar una variable aleatoria de mi población de muestra de antemano? – Mark
Creo que puede usar su muestra (no "población de muestra") – van
¿Muestra como en un valor de muestra? Tenía la impresión de que podía usar una muestra de varios resultados como parámetro, pero tal vez me engañaron :) – Mark