test - t student python
T-test en pandas (2)
Si quiero calcular la media de dos categorías en Pandas, puedo hacerlo así:
data = {''Category'': [''cat2'',''cat1'',''cat2'',''cat1'',''cat2'',''cat1'',''cat2'',''cat1'',''cat1'',''cat1'',''cat2''],
''values'': [1,2,3,1,2,3,1,2,3,5,1]}
my_data = DataFrame(data)
my_data.groupby(''Category'').mean()
Category: values:
cat1 2.666667
cat2 1.600000
Tengo una gran cantidad de datos formateados de esta manera, y ahora tengo que hacer una prueba T para ver si la media de cat1 y cat2 son estadísticamente diferentes. ¿Cómo puedo hacer eso?
EDITAR: No me había dado cuenta de que esto era sobre el formato de datos. Podrías usar
two_data = pd.DataFrame(data, index=data[''Category''])
Entonces acceder a las categorías es tan simple como
scipy.stats.ttest_ind(two_data.loc[''cat''], two_data.loc[''cat2''], equal_var=False)
El loc operator
accede a las filas por etiqueta.
Como dijo @G García
un lado o dos lados dependientes o independientes
Si tiene dos muestras independientes pero no sabe que tienen la misma varianza , puede usar la prueba t de Welch . Es tan simple como
scipy.stats.ttest_ind(cat1[''values''], cat2[''values''], equal_var=False)
Por razones para preferir la prueba de Welch, vea https://stats.stackexchange.com/questions/305/when-conducting-a-t-test-why-would-one-prefer-to-assume-or-test-for-equal-vari .
Para dos muestras dependientes , puede usar
scipy.stats.ttest_rel(cat1[''values''], cat2[''values''])
depende de qué tipo de prueba t desee hacer (dependiente de uno o dos lados o independiente) pero debe ser tan simple como:
from scipy.stats import ttest_ind
cat1 = my_data[my_data[''Category'']==''cat1'']
cat2 = my_data[my_data[''Category'']==''cat2'']
ttest_ind(cat1[''values''], cat2[''values''])
>>> (1.4927289925706944, 0.16970867501294376)
devuelve una tupla con la estadística t y el valor p
ver aquí para otras pruebas t http://docs.scipy.org/doc/scipy/reference/stats.html