Interpretación de Tamaños del Efecto: d de Cohen, g de Hedge, y Eta al cuadrado

Cuando realizamos análisis estadísticos de comparación de grupos, es importante saber cuál es el tamaño o magnitud del efecto de las diferencias detectadas. Para esto debemos comprender cómo se interpretan algunos de los tamaños del efecto más comúnes como lo son la d de Cohen, la g de Hedge, y el Eta al cuadrado.

d de Cohen

La d de Cohen es una medida del tamaño del efecto que se utiliza para cuantificar la magnitud de la diferencia entre las medias de dos grupos, expresada en unidades de desviación estándar. A diferencia de la significación estadística (valor p), que se ve fuertemente influenciada por el tamaño de la muestra, la d de Cohen indica la importancia práctica de los resultados y es independiente del tamaño muestral (Cohen, 1988). 

Signo positivo o negativo: El signo de la d de Cohen indica la dirección del efecto, es decir, qué grupo tiene la media más alta. Un valor negativo simplemente indica que la media del grupo experimental es menor que la del grupo de control, mientras que uno positivo indica lo contrario. La magnitud del efecto no se ve afectada por el signo (Cohen, 1988).

Tabla 1
Interpretación Tamaño del Efecto d de Cohen

Tamaño del efectoRango de valoresInterpretación
d de Cohen0.00 a 0.19Efecto muy pequeño o trivial. La diferencia entre las medias de los grupos es insignificante.
 0.20 a 0.49Efecto pequeño. La diferencia entre las medias de los grupos es mínima.
 0.50 a 0.79Efecto mediano. La diferencia es moderada y perceptible a simple vista.
 0.80 o másEfecto grande. La diferencia entre los grupos es significativa y claramente visible.

g de Hedges

La g de Hedges es una medida del tamaño del efecto que, al igual que la d de Cohen, mide la diferencia estandarizada entre dos medias (Hedges & Olkin, 1985). Sin embargo, la g de Hedges es una versión modificada que corrige el sesgo al alza que ocurre en la d de Cohen, especialmente cuando el tamaño de las muestras es pequeño (menor a 20). Por esta razón, la g de Hedges se considera una estimación más precisa del tamaño del efecto poblacional en estudios con muestras pequeñas y es especialmente útil en meta-análisis para comparar efectos de múltiples estudios.

Tabla 2
Interpretación Tamaño del Efecto g de Hedges

Tamaño del efectoRango de valoresInterpretación
g de Hedges0.00 a 0.19Efecto muy pequeño o trivial. La diferencia entre las medias de los grupos es insignificante.
 0.20 a 0.49Efecto pequeño. La diferencia entre las medias de los grupos es mínima.
 0.50 a 0.79Efecto mediano. La diferencia es moderada y perceptible a simple vista.
 0.80 o másEfecto grande. La diferencia entre los grupos es significativa y claramente visible.

Eta al cuadrado

El Eta al cuadrado es una medida del tamaño del efecto que se utiliza en el Análisis de Varianza (ANOVA). A diferencia de la d de Cohen o la g de Hedges, que miden la diferencia estandarizada entre medias, el Eta al cuadrado mide la proporción de la varianza total en la variable dependiente que puede ser explicada por la variable independiente (Iraurgi, 2009; Tomczak & Tomczak, 2014). Su valor oscila entre 0 y 1. 

Limitaciones del Eta al cuadrado 

Es importante considerar algunas limitaciones del Eta al cuadrado al interpretar los resultados: 

  • Sesgo en muestras pequeñas: El Eta al cuadrado tiende a sobreestimar el tamaño del efecto en muestras pequeñas (menores de 20).
  • Número de variables: El valor de Eta al cuadrado se ve influenciado por el número de variables en el modelo.
  • Sesgo en diseños complejos: En modelos más complejos, como el ANOVA de medidas repetidas o el factorial, la suma de los Eta al cuadrado de todos los efectos puede superar el 100%, lo que no es lógicamente posible. Para estos casos, se prefiere utilizar el Eta al cuadrado parcial, que mide la proporción de la varianza asociada a un efecto particular, excluyendo las varianzas de otros factores. 

Eta al cuadrado vs. Eta al cuadrado parcial 

En el ANOVA de un solo factor, el Eta al cuadrado y el Eta al cuadrado parcial tienen el mismo valor. Sin embargo, en el ANOVA factorial, el Eta al cuadrado parcial se considera una medida más precisa para evaluar la contribución de cada factor individualmente. La interpretación en los rangos de valores para ambos es la misma.

Tabla 3
Interpretación Tamaño del Efecto Eta al Cuadrado

Tamaño del efectoRango de valoresInterpretación
Eta al cuadrado< 0.01Efecto muy pequeño o trivial. La variable independiente explica menos del 1% de la varianza total en la variable dependiente.
 0.01 a 0.05Efecto pequeño. La variable independiente explica entre el 1% al 5% de la varianza total en la variable dependiente.
 0.06 a 0.13Efecto mediano. La variable independiente explica entre el 6% al 13% de la varianza total en la variable dependiente.
 0.14 o másEfecto grande. La variable independiente explica 14% o más de la varianza total en la variable dependiente.

Referencias

Cohen, J. (1988). Statistical power analysis for the behavioral sciences (2nd ed.) Lawrence Erlbaum.

Hedges, L. V., & Olkin, I. (1985). Statistical methods for meta-analysis. Academic Press.

Iraurgi, I. (2009). Evaluación de resultados clínicos (II): Las medidas de la significación clínica o los tamaños del efecto. Norte de Salud Mental, 34(1), 94-110.

Tomczak, M., & Tomczak, E. (2014). The need to report effect size estimates revisited: An overview of some recommended measures of effect size. Trends in Sport Sciences, 1(21), 19-25.

Introducción al Webscraping con Python – Tutorial

El webscraping es una técnica fundamental en la Ciencia de Datos que permite extraer información de páginas web de manera automatizada. Esta práctica es invaluable para recolectar datos masivos de Internet, que posteriormente pueden ser analizados y utilizados para diversos propósitos, como análisis de mercado, seguimiento de tendencias, investigación académica, entre otros. En este tutorial, exploraremos la importancia del webscraping, sus aplicaciones en la Ciencia de Datos, y proporcionaremos ejemplos claros con códigos en Python para que puedas comenzar a aplicarlo en tus proyectos.

Importancia del Webscraping

En la era digital, la cantidad de información disponible en la web es inmensa y está en constante crecimiento. Sin embargo, gran parte de esta información no está estructurada y es inaccesible para análisis directos. El webscraping permite transformar esta información no estructurada en datos útiles y estructurados, facilitando su análisis y aprovechamiento.

Algunas de las aplicaciones más comunes del webscraping incluyen:

  • Análisis de Competencia: Recolectar datos de productos, precios y estrategias de competidores.
  • Investigación de Mercado: Obtener opiniones de usuarios, calificaciones de productos y tendencias del mercado.
  • Agregación de Noticias: Recopilar artículos de noticias de diferentes fuentes para análisis de medios y estudios de opinión.
  • Ciencia de Datos y Machine Learning: Crear datasets personalizados para entrenar modelos de machine learning.

Herramientas Comunes para Webscraping

En Python, las bibliotecas más utilizadas para webscraping son:

  • Requests: Para realizar solicitudes HTTP y obtener el contenido de las páginas web.
  • BeautifulSoup: Para analizar y extraer datos del HTML.
  • Selenium: Para interactuar con páginas web dinámicas que requieren JavaScript.

Ejemplo de Webscraping Paso a Paso

A continuación, presentaremos un ejemplo sencillo de webscraping utilizando Requests y BeautifulSoup.

Paso 1: Instalación de Bibliotecas

Nota: Este paso se puede saltar si haces los análisis en Jupyter o en Googel Colab. Si ese es tu caso, puedes ir directo al paso 2.

Primero, necesitamos instalar las bibliotecas requests y beautifulsoup4 si aún no las tenemos. Esto se puede hacer utilizando pip:

pip install requests
pip install beautifulsoup4

Paso 2: Realizar una Solicitud HTTP

Utilizaremos requests para obtener el contenido de una página web. En este ejemplo, extraeremos datos de la página de The Legend of Zelda en Wikipedia.

import requests

url = "https://es.wikipedia.org/wiki/The_Legend_of_Zelda"
response = requests.get(url)

if response.status_code == 200:
    page_content = response.text
    print("Página obtenida exitosamente")
else:
    print(f"Error al obtener la página: {response.status_code}")

Paso 3: Analizar el HTML

Con BeautifulSoup, podemos analizar el contenido HTML y extraer la información que necesitamos.

from bs4 import BeautifulSoup

soup = BeautifulSoup(page_content, 'html.parser')

# Extraer títulos de secciones que están en etiquetas <h2>
titulos_secciones = soup.find_all('h2')

for titulo in titulos_secciones:
    print(titulo.get_text())

Paso 4: Extraer Datos Específicos

Podemos extraer más detalles, como los enlaces a las noticias y los resúmenes.

# Extraer contenido de cada sección
for titulo in titulos_secciones:
    titulo_texto = titulo.get_text()
    contenido = ""
    
    # Obtener el siguiente elemento hasta encontrar el próximo <h2>
    siguiente_elem = titulo.find_next_sibling()
    while siguiente_elem and siguiente_elem.name != 'h2':
        if siguiente_elem.name == 'p':
            contenido += siguiente_elem.get_text() + "\n"
        siguiente_elem = siguiente_elem.find_next_sibling()
    
    print(f"Título: {titulo_texto}")
    print(f"Contenido: {contenido}")
    print("-" * 20)

Paso 5: Almacenar los Datos

Finalmente, podemos almacenar los datos extraídos en un archivo CSV para su posterior análisis.

import csv

with open('zelda_wikipedia.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerow(["Título", "Contenido"])
    
    for titulo in titulos_secciones:
        titulo_texto = titulo.get_text()
        contenido = ""
        
        siguiente_elem = titulo.find_next_sibling()
        while siguiente_elem and siguiente_elem.name != 'h2':
            if siguiente_elem.name == 'p':
                contenido += siguiente_elem.get_text() + "\n"
            siguiente_elem = siguiente_elem.find_next_sibling()
        
        writer.writerow([titulo_texto, contenido])

Conclusión

El webscraping es una herramienta poderosa para la Ciencia de Datos que permite extraer y estructurar grandes volúmenes de información disponible en la web. En este tutorial, hemos cubierto los fundamentos del webscraping con Python, utilizando Requests y BeautifulSoup para obtener y analizar datos de una página web. Estos conocimientos pueden ser aplicados en una amplia variedad de contextos, permitiéndote convertir información no estructurada en datos valiosos para tus análisis y proyectos de Ciencia de Datos.

Para profundizar en este tema, considera explorar bibliotecas adicionales como Selenium para interactuar con páginas web dinámicas, y frameworks como Scrapy para proyectos de scraping más complejos. ¡Feliz scraping!

¿Qué es la Ciencia de Datos?

La ciencia de datos es una disciplina que combina conocimientos de estadística, matemáticas, programación e informática para extraer información útil de grandes cantidades de datos. Los científicos de datos son profesionales que aplican estas técnicas para resolver problemas reales en diversos campos, como negocios, salud, psicología, educación, ingeniería, etc.

Esta tiene muchas aplicaciones prácticas, como el análisis de redes sociales, la detección de fraudes, la personalización de productos o servicios, el reconocimiento de imágenes o voz, la inteligencia artificial, el aprendizaje automático, el big data y mucho más.

Para convertirse en un científico de datos, se requiere tener una formación sólida en matemáticas y estadística, así como dominar lenguajes de programación como Python o R, y herramientas de análisis de datos como SQL, Excel y Tableau. Además, se necesita tener curiosidad, creatividad y capacidad de comunicación para interpretar los resultados y presentarlos de forma clara y efectiva.

La ciencia de datos es una carrera con mucha demanda y proyección de futuro, ya que cada vez hay más datos disponibles y más necesidad de analizarlos y aprovecharlos. Si te interesa aprender más sobre esta fascinante disciplina, te invitamos a seguir nuestro blog, donde encontrarás artículos, recursos y consejos para iniciarte en el mundo de la ciencia de datos.

Tutorial Básico de Ciencia de Datos con Python

La ciencia de datos es un campo interdisciplinario que involucra la extracción de conocimiento y perspectivas valiosas a partir de datos, mediante la aplicación de técnicas de análisis estadístico, computacional y matemático. Su objetivo principal es el de obtener una mejor comprensión de los fenómenos estudiados a través de la recolección, procesamiento, análisis y visualización de datos.

Esta es utilizada en diversos campos, desde negocios y finanzas hasta medicina, ingeniería y ciencias sociales. El proceso de ciencia de datos generalmente implica la formulación de preguntas, la recolección de datos relevantes, la preparación de los datos para el análisis, el análisis de los datos mediante técnicas estadísticas y matemáticas, y la interpretación de los resultados.

Asimismo, se basa en la utilización de técnicas y herramientas informáticas avanzadas, como algoritmos de aprendizaje automático, análisis de redes, minería de datos y visualización de datos, entre otras. Con la creciente cantidad de datos generados en el mundo, la ciencia de datos se ha vuelto cada vez más importante en la toma de decisiones y en la resolución de problemas en diversos campos.

A continuación, les presento un breve tutorial introductorio a la ciencia de datos utilizando Python como lenguaje de programación. El primer paso es instalar Python en sus computadoras. Esto lo pueden hacer desde aquí. Luego deben instalar un IDE de fácil uso como Visual Studio Code o desde Jupyter Notebook entre otros. Una vez tienen esto listo podemos comenzar a practicar.

En este tutorial estaremos practicando los siguientes pasos con Python:

  1. Importación de bibliotecas
  2. Carga de datos
  3. Exploración de datos
  4. Preprocesamiento de datos
  5. Modelado y entrenamiento
  6. Evaluación del modelo
  7. Implementación del modelo

1. Importación de bibliotecas

Antes de comenzar a trabajar con los datos, es necesario importar las bibliotecas necesarias. En este tutorial, utilizaremos las siguientes bibliotecas:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

La biblioteca pandas es útil para trabajar con datos estructurados, mientras que la biblioteca numpy es ideal para realizar cálculos matemáticos. Por su parte, matplotlib y seaborn se utilizan para visualizar los datos.

2. Carga de datos

Una vez que hemos importado las bibliotecas necesarias, es hora de cargar nuestros datos. En este tutorial, utilizaremos un conjunto de datos de flores llamado «Iris». Puedes descargar este conjunto de datos en formato CSV desde el siguiente enlace: https://archive.ics.uci.edu/ml/datasets/iris.

Para cargar los datos, utilizaremos la función «read_csv» de pandas:

df = pd.read_csv('iris.csv')

3. Exploración de datos

Ahora que hemos cargado los datos, es hora de explorarlos. Podemos comenzar imprimiendo las primeras filas del conjunto de datos con la función «head»:

print(df.head())

Esto nos mostrará las primeras cinco filas del conjunto de datos. También podemos obtener información sobre los datos con la función «info»:

print(df.info())

Esto nos mostrará información sobre el conjunto de datos, como el número de filas, el número de columnas y los tipos de datos en cada columna.

4. Preprocesamiento de datos

Una vez que hemos explorado los datos, es posible que tengamos que realizar algunos ajustes antes de poder entrenar un modelo. En este tutorial, haremos lo siguiente:

  • Eliminaremos la columna «Id», ya que no es útil para nuestro análisis.
  • Convertiremos las etiquetas de clase en valores numéricos.
  • Dividiremos el conjunto de datos en conjuntos de entrenamiento y prueba.
# Eliminar la columna "Id"
df = df.drop('Id', axis=1)

# Convertir las etiquetas de clase en valores numéricos
df['Species'] = df['Species'].replace({'Iris-setosa': 0, 'Iris-versicolor': 1, 'Iris-virginica': 2})

# Dividir el conjunto de datos en conjuntos de entrenamiento y prueba
from sklearn.model_selection import train_test_split
X = df.drop('Species', axis=1)
y = df['Species']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

En este código, hemos eliminado la columna «Id» utilizando la función «drop». Luego, hemos convertido las etiquetas de clase en valores numéricos utilizando la función «replace». Finalmente, hemos dividido el conjunto de datos en conjuntos de entrenamiento y prueba utilizando la función «train_test_split» de scikit-learn, que divide el conjunto de datos en conjuntos de entrenamiento y prueba. El conjunto de entrenamiento se utilizará para entrenar el modelo y el conjunto de prueba se utilizará para evaluar la precisión del modelo.

5. Modelado y entrenamiento

Una vez que hemos preparado los datos, podemos proceder a entrenar nuestro modelo. En este tutorial, utilizaremos un modelo de clasificación de bosques aleatorios, que es un algoritmo de aprendizaje automático que funciona mediante la construcción de varios árboles de decisión (decision tree) y combinando sus resultados para obtener una predicción final.

from sklearn.ensemble import RandomForestClassifier
rfc = RandomForestClassifier(n_estimators=100)
rfc.fit(X_train, y_train)

En este código, hemos importado la clase RandomForestClassifier de scikit-learn y hemos creado una instancia del modelo con 100 árboles. Luego, hemos utilizado el método «fit» para entrenar el modelo con el conjunto de entrenamiento.

6. Evaluación del modelo

Una vez que hemos entrenado nuestro modelo, podemos evaluar su precisión utilizando el conjunto de prueba. En este tutorial, utilizaremos la métrica de precisión, que nos indica la proporción de predicciones correctas realizadas por el modelo.

from sklearn.metrics import accuracy_score
y_pred = rfc.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print('Precisión:', accuracy)

En este código, hemos importado la función accuracy_score de scikit-learn y hemos utilizado el método «predict» del modelo para realizar predicciones con el conjunto de prueba. Luego, hemos calculado la precisión utilizando la función «accuracy_score» y hemos imprimido el resultado.

7. Implementación del modelo

Finalmente, una vez que hemos evaluado nuestro modelo y estamos satisfechos con su precisión, podemos implementarlo en una aplicación real. En este tutorial, utilizaremos el modelo para realizar una predicción sobre una nueva flor.

new_flower = np.array([5.1, 3.5, 1.4, 0.2]).reshape(1, -1)
prediction = rfc.predict(new_flower)
print('Predicción:', prediction)

En este código, hemos creado un arreglo numpy que representa los datos de una nueva flor y lo hemos pasado al método «predict» del modelo para obtener una predicción. Luego, hemos imprimido la predicción resultante.

¡Y eso es todo! Con este tutorial básico de ciencia de datos en Python, has aprendido los conceptos fundamentales para procesar, analizar y modelar datos para obtener conocimientos y tomar decisiones informadas.