No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Pruebas de hip贸tesis en Python: t de Student

16/22
Recursos

Aportes 30

Preguntas 9

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Para tener el dataset de iris no es necesaro subir ningun csv o copiar una url, est谩 ya almacenado en la librer铆a de seaborn

La f贸rmula de SED que aparece en 5:51 no est谩 bien. Aparece 2 veces sigma sub-1, lo que hace a uno pensar que son el mismo valor, y no es as铆, ya que corresponden a los valores de sepal-length y sepal-witdh respectivamente. Atentos a ese detalle.

Una correcci贸n en la f贸rmula:

Aclaraciones respecto a los resultados de los ejemplos:

  1. El valor t calculado de manera manual (v铆a f贸rmula) se hace para un N = 10, el cual nos da como resultado 9.4:

Al calcularlo con un N igual a la longitud total del conjunto de datos (len(iris)) el resultado es el mismo que el valor t calculado con scipy.stats (df = degreees of freedom):

  1. El valor del t-test no se compara con el p-value. Entonces, 驴C贸mo se interpreta este n煤mero? El valor esperado de t bajo la hip贸tesis nula es 0, es decir, si el resultado del t-test es 0 (o cercano), no hay diferencias significativas entre las medias de las muestras comparadas. Por otro lado, un valor t grande en magnitud (ignorando si hay signo negativo) indicar铆a que s铆 hay una diferencia.

  2. El p-value se compara con un l铆mite de significancia alfa (0.05, 0.01). Si el p-value es menor a este alfa, rechazamos la hip贸tesis nula y podemos concluir que s铆 existe una diferencia significativa entre las medias. En este caso el p-value = 7.02e^-112, por lo que es un valor muy inferior a un alfa de, por ejemplo, 0.05.

    En conclusi贸n, con un valor del t-test grande y un p-value inferior a un alfa de 0.05, podemos rechazar la hip贸tesis nula y decir que si existe una diferencia significativa entre las variables.

Este video me ayudo a comprender mejor muchos conceptos que no entendia bien:

  • t-value
  • t-test
  • p values

B谩sicamente esta clase de Platzi me ayud贸 a entender como realizar el t-test utilizando Python y la librer铆a de scipy, pero no entend铆 que significaba o como interpretar cada concepto.

Me confunde un poco la sintaxis que usa la profe, desconoc铆a que

 iris.mean()['sepal-length']

Pod铆a ser lo mismo que

 iris['sepal-length'].mean()

lo use de las dos maneras y da lo mismo, pero aun as铆 prefiero la segunda forma, que me parece, es la m谩s intuitiva

En este video explican un poco mejor la prueba de hip贸tesis T Student https://youtu.be/RA9mPkbrZqU

Para quienes quieran tener las f贸rmulas no con im谩genes sino como c贸digo en Latex dentro del Markdown.

SE

$$
SE = \frac{\sigma}{\sqrt{N}}
$$

SED

$$
SED = \sqrt{\frac{\sigma_1^2}{N_1}+\frac{\sigma_2^2}{N_2}}
$$

t de Student

$$
t = \frac{\bar{x_1}-\bar{x_2}}{SED}=\frac{x_1-x_2}{\sqrt{\frac{(s_1)^2}{n_1}+\frac{(s_2)^2}{n_2}}}
$$

La prueba t de Student es una prueba estad铆stica utilizada para comparar dos medias de muestras independientes para determinar si existe una diferencia significativa entre ellas. En Python, se puede realizar una prueba t de Student utilizando la funci贸n 鈥渢test_ind鈥 del paquete

鈥渟cipy.stats鈥.

Ejemplo:

Copy code

from scipy.stats import ttest_ind

datos de muestra 1

sample1 = [1, 2, 3, 4, 5]

datos de muestra 2

sample2 = [5, 6, 7, 8, 9]

realizar la prueba t de Student

t_stat, p_value = ttest_ind(sample1, sample2)
# imprimir el valor t y el valor p
print("t-statistic:", t_stat)
print("p-value:", p_value)
  • En el ejemplo, la variable 鈥渢_stat鈥 contiene el valor t calculado y la variable 鈥減_value鈥 contiene el valor p obtenido de la prueba. Si el valor p es menor que un nivel de significancia establecido (generalmente 0,05), se rechaza la hip贸tesis nula (que las dos medias son iguales) y se concluye que existe una diferencia significativa entre las dos muestras.

  • Nota: Es importante recordar que, al igual que en cualquier prueba estad铆stica, es necesario cumplir con ciertos supuestos antes de realizar una prueba t de Student, como normalidad y varianza homogenea en las muestras.

En este caso t_stat es nuestro valor critico y p nos da dos valores el t calculado (36.54) y el alpha ( 3.987 e -112),
Si el valor absoluto del valor t calculado es mayor que el valor cr铆tico, usted rechaza la hip贸tesis nula. Si el valor absoluto del valor t es menor que el valor cr铆tico, usted no puede rechazar la hip贸tesis nula.
(Cuanso se usa el igual en la prueba de hipotesis siempre nos referimos a una prueba t de dos colas).
HIPOTESIS NULA :
Las dos muestras provienen de la misma poblacion o tienen la misma distribuci贸n
H0=H1

Otra forma de comprobar esto es mirando el valor alpha el cual es menor que el nivel de significancia este alpha esta dentro de la zona de rechazo de la hipoesis nula ya que es menor que nuestro alpha de 0.5

la profe se equivoco en el minute -6:14 hay que poner el tama帽o de la muestra con el tama帽o real no con 10

se_length = df['sepal-length'].std()/np.sqrt(len(df)) #standar error
se_width = df['sepal-width'].std()/np.sqrt(len(df)) #standar error

osea as铆

de esta forma si te da lo mismo que la function final

Es necesario aclarar algo: El estadistico 鈥渢 _obs鈥 NO se debe comparar con el p-value, pero s铆 est谩n relacionados. Para el testing con T-Student:

p-value= Prob( |T | > | t_obs | ),
donde T es una variable aleatoria que sigue una distribuci贸n T Student con grados de libertad df=N-1, y t _obs es el valor del estadistico observado.
El p-value es por definici贸n valor m谩s bajo de alpha sobre el cual se rechazar铆a la hip贸tesis nula. Si p-value < alpha, donde alpha es el nivel de significancia deseado (normalmente se usa el 5% o alpha=0.05), entonces se rechaza la hip贸tesis nula.

Igualmente podemos tomar la decicis贸n del testeo sin necesidad de tomar el p-value. Rechazaremos la hipotesis nula si |t_obs| > t_{df , alpha/2}= F^-1 (1-alpha/2). Donde F^-1 es la inversa de la CDF de la distribuci贸n T-Student. Tambi茅n es posible obtener F^-1 (1-alpha/2) a partir de una tabla, similar a como se hace con la distribuci贸n Normal.

Pesima clase! debo continuar el curso de mala gana porque quiero aprobar y certificar estos temas...pero deber铆an rehacerlo todo desde 0.

Si les genera error como as mi error las siguineets formulas: ej: 鈥渟e_length = iris.std()[鈥榮epal.length鈥橾/np.sqrt(10)鈥 deben cambiar la funcion al final de la columna. P.e.:.se_length = iris[鈥榮epal.length鈥橾.std()/np.sqrt(10)

No me queda claro la formula SED. La profe calculo el valor de las variables se_length y se_width con la formula SE, LUEGO APLICO la formula SED y elevo al cuadrado cada variable, diciendo que ese valor es el mismo que el SE, haciendo una simplificacion algebraica i da los mismo (aplicado la raiz cuadrada a la fraccion), en todo caso los valores N1 y N2 ya no deber铆an considerarse puesto que ya se consider贸 en el SE. Salvo que alguien pudiera aclarar al respecto

Les proporcionar茅 dos reportes uno un reporte que explique el c贸digo y las variables involucradas y en el segundo reporte explicare los resultados:

Reporte 1:

C贸digo y Resultados: An谩lisis de Dos Muestras con Prueba t

En este an谩lisis, se est谩n comparando dos muestras (var_length y var_width) de las caracter铆sticas 鈥渟epal-length鈥 y 鈥渟epal-width鈥 de la base de datos Iris. El objetivo es evaluar si hay diferencias significativas entre las medias de estas dos caracter铆sticas.

import numpy as np
from scipy.stats import ttest_ind
import pandas as pd

# Configuraci贸n de la semilla aleatoria para reproducibilidad
np.random.seed(42)

# Tomando 10 muestras aleatorias de "sepal-length" y "sepal-width" de la base de datos Iris
var_length = iris["sepal-length"].sample(n=10)
var_width = iris["sepal-width"].sample(n=10)

# C谩lculo del error est谩ndar de las medias de las muestras
se_length = var_length.std() / np.sqrt(10)
se_width = var_width.std() / np.sqrt(10)

# Imprimir los resultados del error est谩ndar para longitud y ancho del s茅palo
print("se-length:", se_length)
print("se-width:", se_width)

# C谩lculo del error est谩ndar combinado (Standard Error of the Difference)
sed = np.sqrt((se_length**2) + (se_width**2))

# Imprimir el resultado del error est谩ndar combinado
print("sed:", sed)

# C谩lculo de la estad铆stica t
t_stat = (var_length.mean() - var_width.mean()) / sed

# Imprimir el resultado de la estad铆stica t
print("t_stat:", t_stat)

# Realizar la prueba t de dos muestras (independientes)
p = ttest_ind(var_length, var_width)

# Imprimir el resultado de la prueba t
print("p:", p)

Resultados Explicados:

  1. se-length y se-width: Estos son los errores est谩ndar de las medias de las muestras para la longitud y el ancho del s茅palo, respectivamente. El valor del error est谩ndar es una medida de cu谩nta variabilidad hay en las medias de las muestras.

  2. sed: Este es el error est谩ndar combinado (Standard Error of the Difference) que se utiliza en la f贸rmula para calcular la estad铆stica t. Es una medida de la variabilidad combinada entre las dos muestras.

  3. t_stat: Este es el valor de la estad铆stica t, que se calcula dividiendo la diferencia de las medias de las muestras entre el error est谩ndar combinado. Representa cu谩ntas desviaciones est谩ndar est谩 separada la diferencia de medias del valor esperado (cero) bajo la hip贸tesis nula.

  4. p: Este es el resultado de la prueba t de dos muestras. Proporciona la estad铆stica t calculada y el valor p asociado. El valor p es la probabilidad de obtener un resultado tan extremo o m谩s extremo que el observado si las dos muestras se comportaran igual (hip贸tesis nula).

En resumen, el c贸digo realiza un an谩lisis de dos muestras utilizando la prueba t, calculando errores est谩ndar, estad铆sticas t y valores p para evaluar si hay diferencias significativas entre las medias de las muestras de 鈥渟epal-length鈥 y 鈥渟epal-width鈥 en la base de datos Iris. El valor p se utiliza para determinar si estas diferencias son estad铆sticamente significativas.

Les recomiendo esta p谩gina para comprender mejor los c谩lculos realizados en esta clase. Saludos, y a seguir estudiando!

Para los que no les quedo muy claro sobre que trata de probar la prueba t-test en este ejemplo, prueba que 2 medias poblacionales son iguales o no. El SED en esencia es igual que el SE, es el error estandar, solo que el SE es el error estandar de la distribucion muestral de las medias muestrales de una poblacion y el SED es el error estandar de la distribucion muestral de (x media 1 - x media 2) osea la distribucion de las diferencias entre ambas medias, en otras palabras SE es para relizar inferencias acerca de la media de una poblacion y el SED para realizar inferencias de la media con 2 poblaciones.

Algunas imagenes que necesite para entender el P - Value

Con la base de datos cars del curso de Estad铆stica Descriptiva, hice el ejercicio para probar la hip贸tesis nula que no hay diferencias entre las medias de los precios de los veh铆culos Toyota y de los veh铆culos Suzuki. Lo resultados son: t\_stat = `14.114195350124266` p = `6.079117649427607e-20` Se rechaza la hip贸tesis nula, esto significa que los datos proporcionan suficiente evidencia que hay una diferencia significativa entre el precio de las marcas Toyota y Suzuki A continuaci贸n el c贸digo: `df = pd.read_csv('cars_1.csv')` `df.head() ` ```python toyota_cars = df.loc[df['manufacturer_name'] == 'Toyota'] std_price_usd = toyota_cars['price_usd'].std() n_toyota = len(toyota_cars) se_price_t = std_price_usd / np.sqrt(n_toyota) ``````python suzuki_cars = df.loc[df['manufacturer_name'] == 'Suzuki'] std_price_usd_s = suzuki_cars['price_usd'].std() n_suzuki = len(suzuki_cars) se_price_s = std_price_usd_s / np.sqrt(n_suzuki) ```Error est谩ndar para los precios de autos Toyota: 204.94709278859372 Error est谩ndar para los precios de autos Suzuki: 243.81791323571133C谩lculo de SED```python sed_1=np.sqrt((se_price_t**2) + (se_price_s**2)) print(sed_1) ```sed = 318.51292855567624C谩lculo de t\_stat```python media_toyota = toyota_cars['price_usd'].mean() media_suzuki = suzuki_cars['price_usd'].mean() print(media_toyota) print(media_suzuki) t_stat = (media_toyota - media_suzuki)/sed_1 t_stat ```Media precio Toyota = 9798.15 Media precio Suzuki = 5302.59`t_stat = 14.114195350124266`C谩lculo de p```python p = ttest_ind(toyota_cars['price_usd'], suzuki_cars['price_usd']) ````pvalue=6.079117649427607e-20)`
Hice el ejercicio de pruebas de hip贸tesis, utilizando la base de datos cars del curso de Estad铆stica Descriptiva. Compar茅 los precios de los veh铆culos Toyota con los precios de los veh铆culos Suzuki, usando las herramientas del curso: `df = pd.read_csv('cars_1.csv')` `df.head()`
Chequen esta pagina aqui le entendi mas <https://www.statology.org/t-value-vs-p-value/#:~:text=For%20each%20test%2C%20the%20t-value%20is%20a%20way>,data%20if%20the%20null%20hypothesis%20is%20actually%20true.
No me queda claro cu谩l es la hip贸tesis nula que quiero rechazar en este caso. Hasta donde escuch茅, era saber si las distribuciones de `sepal_length` y `sepal_width` eran parecidas.
No entendi un jacaro de esa clase!!

C贸digo para importar la base de datos

url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'
names = ['sepal-length','sepal-width','petal-length','petal-width','class']
iris = pd.read_csv(url,names = names)
iris.head()

Les comparto una tabla que me ha sido muy util a la hora de saber que prueba usar.

https://help.xlstat.com/es/6443-que-prueba-estadistica-deberia-utilizar

ademas hay que saber plantear la prueba de hipotesis en un experimento.
https://help.xlstat.com/es/6761-what-difference-between-two-tailed-and-one-tailed-test

recomiendo usar esta nomenclatura ya que igual manda un aviso que un futuro la forma que escribio la profesora sera reconocida como error:

p = ttest_ind(iris['sepal-length'],iris['sepal-width'])

Es decir indicamos primero en donde queremos sacar el mean, y le ponemos la funcion mean, en vez de llamar el mean y luego decir donde queremos ver.

Les dejo el c贸digo del ejemplo que se trata en este video

Consigna:
Para obtener que los alimentos tengan una buena asimilaci贸n deben de tener un PH menos a 7, es por eso que se analizaron 13 muestras de un alimento obteniendo los siguientes resultados, 驴Se puede decir estad铆sticamente con un nivel de confianza de 95% que este alimento es apto para el consumo humano?

import pandas as pd
import numpy as np

""" Ejercicio video Yt """

muestra_1 = [6.4,5.3,8.2,7.6,4.7,6.4,7.2,7.1,6.4,5.7,8.1,6.7,7.2]
muestra_1 = pd.Series(muestra_1)
muestra_1_list = list(muestra_1) 

mu = 7
muestra_1_mean = muestra_1.mean()
muestra_1_std = muestra_1.std()
muestra_1_var = muestra_1.var()
muestra_1_cant = muestra_1.count()
muestra_Grado_libertad = muestra_1_cant -1

t_test = (muestra_1_mean - mu) / (muestra_1_std / np.sqrt(muestra_1_cant))
t_test = round(t_test,3)


print(f """
Muestra: {muestra_1_list} \n

H0 = mu < 7
H1 = mu > 7 \n

Nivel de Confianza: 95%\n
Nivel de Significancia: 5%\n
t table: 1.78\n
Mu: {mu}\n
Media: {muestra_1_mean} \n
Desviaci贸n est谩ndar: {muestra_1_std} \n
Varianza: {muestra_1_var} \n
n: {muestra_1_cant}  \n
GL: {muestra_Grado_libertad}  \n
t_test: {t_test} \n


Conclusi贸n:
Al ser el t test ({t_test}) < (1.78) valor cr铆tico obtenido en t table
No se rechaza Ho -> es un alimento apto para el consumo
""")

Solo para hacer notar un punto, la media de la distribuci贸n y la media muestral no son lo mismo. De la misma forma que la desviaci贸n est谩ndar y la desviaci贸n muestral. Hay un concepto que tal vez este fuera del alcance de este curso, que son los grados de libertad que hace que el c谩lculo sea un poquito diferente para cada caso.

Les dejo este canal de You-Tube que me aclaro muchas cosas (en ingl茅s): https://www.youtube.com/c/zedstatistics