slope: representa la pendiente de la línea de regresión. Indica cuánto cambia la variable dependiente por unidad de cambio en la variable independiente. En este caso, un aumento de una unidad en la longitud del pico se asocia con un aumento de 0.0119 en la masa del pingüino.
intercept: representa el valor de la variable dependiente cuando la variable independiente es igual a cero. En este caso, el intercepto indica la masa del pingüino cuando la longitud del pico es cero, lo que no tiene mucho sentido en términos prácticos.
rvalue: representa el coeficiente de correlación entre las dos variables. Indica cuánto se ajustan los datos a la línea de regresión. El valor de rvalue oscila entre -1 y 1, y un valor cercano a 1 indica una correlación positiva fuerte entre las variables. En este caso, el valor de rvalue es 0.6416, lo que indica una correlación moderadamente fuerte entre la longitud del pico y la masa del pingüino.
pvalue: representa el valor p asociado a la hipótesis nula de que no hay relación entre las dos variables. Un valor p pequeño (generalmente < 0.05) indica que la hipótesis nula puede ser rechazada y que hay evidencia suficiente para decir que existe una relación significativa entre las variables. En este caso, el valor de pvalue es 3.7481e-09, que es muy pequeño y sugiere que hay una relación significativa entre la longitud del pico y la masa del pingüino.
stderr y intercept_stderr: representan el error estándar de la pendiente y el intercepto, respectivamente. Indican cuánto varía la pendiente y el intercepto en diferentes muestras de datos. En este caso, valores más pequeños indican que el ajuste del modelo es más preciso y confiable.
Analisis de Regresion Simple
Permite medir la fuerza del efecto en los datos mediante el ajuste de una linea recta. Es mucho mas efectivo para interpretar el comportamiento de los datos.
Esto arroja parametros como el slope el cual indica la pendiente de la recta (A mayor slope, mayor el efecto de la variable x sobre la variable y), intercep que indica el punto donde la linea corta el eje ‘y’ y el rvalue que nos indica la proporcion de datos capturados lo que ayuda en una mejor descripcion de los datos.
Ejemplo donde se realiza de manera manual la regresion lineal con scipy.
#grafica de la longitud en funcion del ancho del picosns.scatterplot( data=preprocessed_penguins_df, x='bill_length_mm', y='bill_depth_mm')#calculo de la regresion linealres_penguins = scipy.stats.linregress( x=preprocessed_penguins_df.bill_length_mm, y=preprocessed_penguins_df.bill_depth_mm
)print(res_penguins)#grafico de la linea utilizando los parametros dados por la regresionfx_1 = np.array([preprocessed_penguins_df.bill_length_mm.min(), preprocessed_penguins_df.bill_length_mm.max()])fy_1 = res_penguins.intercept + res_penguins.slope*fx_1
plt.plot(fx_1, fy_1)
Regresion lineal con Seaborn. No da detallles sobre los datos estadisticos como scipy. Genera una zona de tendencia donde los datos de un modelo tienen mayor probabilidad de caer.
¿Por qué usas la data preporcesada en lugar de la ya procesada?
ah si.. Solo fue un error en el nombre... pero la data que utilizo es la procesada. Saludos
Ese factor que nos está faltando al momento de hacer la gráfica es la segmentación por los distintos tipos de pingüinos.
Spoiler Alert! jejeje
A pesar de que lo que dice el profe es cierto, el resultado 2 tiene mayor impacto en Y (variable dependiente), esto tampoco quiere decir que sea mejor para predecir o incluir en un modelo ya que solo te habla del impacto, si se fijan en el rvalue que es la metrica que te dice cuanto la regresion (la recta que ajustamos a los datos) capta la variabilidad de los datos es menor con respecto al resultado 1, esto quiere decir que un valor de X usando la variable de mayor impacto puede tener muchos valores en Y y terminar solapandose con otros valores de X que tambien tienen ese valor de Y.
Lo cual para un modelo no es bueno al momento de predecir.
Gracias por tu analisis!
esto me estanco por que no me salia el grafico de la pendiente ?
SOLUCION :
manejar los valores en blanco
como ?
df_penguis=( df_penguis
.dropna())
Con Seaborn la vida es mucho más feliz. Acá el motivo:
Tengo una duda desde hace ya como mas de 10 clases de este curso, y es respecto al analisis que estamos realizando del dataset en su conjunto, ya descubrimos hace mucho que hay tendencia cuando analizamos de manera separada por especie de pinguino, incluso tambien descubrimos que habian distribuciones normales cuando separamos por especie, mas tenemos una binomial cuando analizamos en conjunto.
Mi duda:
Es el flujo normal y profesional de trabajo llevar hasta el final el EDA, a pesar de haber hallado y descubierto esta informacion, y luego hacernos otras preguntas, volver al inicio tal como se describio al principio del curso?
O ante la suposicion de que este fuera un caso de la vida real y laboral y descubrir algo tan obvio en nuestro dataset, podriamos de una vez pasar a analizarlo por especie?
Pregunto porque se que es un analisis en un ambiente controlado y que quizas para hacerlo mas didactico y evitar quejas como en el anterior o que la gente se pierda se estara realizando asi, pero yo quiero poner el chip de las buenas practicas profesionales de una vez y siento que hay pasos que estan redundando y/o que podrian omitirse.
Es lo bonito del EDA. Para responder a tu pregunta:
Depende de lo que necesites hacer, todo se basa en tus preguntas del análisis. Por ejemplo si solo necesitas saber cuanto en promedio pesa un pingüino no vas a realizar todo un EDA. Pero si necesitas saber cuales son las diferencias entre especies, tienes que llevarlo a profundidad.
Muchas veces el llevar todos estos procesos te pueden llevar a descubrir insights únicos de cada dataset. Como por ejemplo: Llevando los análisis de las islas y especies, una especie vive en todas las islas pero cada isla tiene su especie en particular. Eso me llevo a otras preguntas que podría investigar como en la isla donde están los pingüinos con más masa muscular que tipo de clima o comida tienen para que se haya dado ese patrón. Otro ejemplo sería, ¿si existe una catástrofe en esa isla?, ¿a que isla debería mudar esa especie?.
Una Excelente frase que encontré en un libro decía:
Si un médico analizará tu salud en datos, ¿Qué buscaría? Los días que estuviste bien, mal o toda la información, en búsqueda de los patrones de comportamiento de una posible enfermedad. Todo depende de lo que se necesite
En efecto, te entiendo perfectamente, en el caso ideal de contar con tiempo, equipo y recursos ilimitados yo y muchos otros claramente nos tomariamos quizas dias, semanas, meses, años. decadas, siglos, milenios, en un solo analisis, la cuestion es que la mayoria de los casos de analisis no parten de un caso ideal en que podamos invertir tanto tiempo explorando un solo caso a profundidad, siempre es mejor tener una hipotesis en base a menos exploracion (entiendase menos informacion como el 99.99% de informacion hacia abajo) que ninguna hipotesis. Por eso debe haber una manera organica en que se consiga un punto optimo en cuanto a productividad por tiempo invertido en el analisis.
Pero hay algo que no termino de comprender, se supone que entre más cercano a 1, más correlacionados están. Pero en los 3 casos, estos se acercan más a 0. Pero cómo se muestra en la gráfica, en los 3 casos hay una relación evidente.
¿Qué puede estar pasando allí? Alguien me podría explicar?
Viendolo a simple vista parece que tiene que ver con las unidades. escalando el data set quizas se corrige un poco? mientras que la x se mueve aproximadamente 2000 unidades, la y solo se mueve 20 o 30, encontraste una respuesta a tu pregunta?
⚠️ Es recomendable normalizar y escalar las variables antes de realizar cualquier tipo de análisis estadístico o de aprendizaje automático para garantizar resultados precisos y confiables.
La ultima grafica que hizo pierde sentido, ya que utilizo todos los pinguinos. Lo mejor hubiera sido dividirlo por especies.
20. Estableciendo relaciones: análisis de regresión simple
¿Cómo calcular la fuerza del efecto?
Con la regresión lineal
Escogí las variables de peso del pingüino y tamaño de alas, al hacer la regresión lineal encuentro una correlación alta con un slope bajo y al intercambiar las variables queda la misma correlación, pero el slope es mayor porque el impacto del peso es mayor.
sns.scatterplot(# Gráfico de dispersión data=processed_penguins_df, x='body_mass_g', y='flipper_length_mm')res_penguins = scipy.stats.linregress(# Regresión lineal x=processed_penguins_df['body_mass_g'], y=processed_penguins_df['flipper_length_mm'])print(res_penguins)fx_1 = np.array([processed_penguins_df['body_mass_g'].min(), processed_penguins_df['body_mass_g'].max()])# Rango de valores para xfy_1 = res_penguins.intercept + res_penguins.slope * fx_1 # Rango de valores para yplt.plot(fx_1, fy_1)sns.lmplot(# Gráfico de dispersión con regresión lineal data=processed_penguins_df, x='body_mass_g', y='flipper_length_mm')
Valores obtenidos en el análisis de regresión simple:
Slope (es el efecto que tiene la correlación en caso de que exista).
Intercept (indica en donde se corta el eje de las y, porque estamos ajustando una línea).
Rvalue (indica cuanto de nuestra variabilidad de los datos estamos capturando con la regresión lineal, podemos ver representado el coeficiente de correlación en este valor aunque con un poco de ruido).
Pvalue (indica si la regresión lineal es significativa)
Y otra serie de parámetros que no forman parte del objeto de estudio de esta clase
Aqui hice la grafica de regresion lineal por cada una de las variables categoricas.
considero que si hay relacion de la forma de los picos como vemos en la grafica se separan por especie
Esta es la regresion lineal entre el peso y la extension del ala.