Un lenguaje para estadística
En el siguiente ejemplo, compara el código que usamos en estos tres lenguajes de programación para hacer esta tarea: importar datos -> realizar un ANOVA de una vía y un ANOVA de medidas repetidas. Toma en cuenta lo siguiente:
anova1
para un ANOVA de una vía y fitrm
para un ANOVA de medidas repetidas.% Importar datos desde un archivo CSV
data = readtable('datos.csv');
% Realizar ANOVA
[p, tbl, stats] = anova1(data.Var1, data.Group);
disp(tbl);
% Realizar ANOVA de medidas repetidas
% Supongamos que tenemos tres medidas repetidas (Cond1, Cond2, Cond3)
% y un factor de sujetos (Subject)
% tenemos que transformar los datos a un formato nuevo
Meas = table([data.Cond1, data.Cond2, data.Cond3], 'VariableNames', {'Measurements'});
Subjects = table(data.Subject, 'VariableNames', {'Subject'});
factorNames = {'Condition'};
rm = fitrm(Meas, 'Measurements~1', 'WithinDesign', factorNames);
ranova(rm)
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
from statsmodels.stats.anova import AnovaRM
# Importar datos desde un archivo CSV
data = pd.read_csv('datos.csv')
# Realizar ANOVA
model = ols('Var1 ~ C(Group)', data=data).fit()
anova_table = sm.stats.anova_lm(model, typ=2)
print(anova_table)
# Realizar ANOVA de medidas repetidas
rm_anova = AnovaRM(data, 'Var1', 'Subject', within=['Condition'])
anova_results = rm_anova.fit()
print(anova_results)
# Cargar las librerías necesarias
library(tidyverse)
library(ez)
# Importar los datos desde un archivo CSV
data <- read_csv('datos.csv')
# Realizar ANOVA
ezANOVA(
data = data, # El dataframe con los datos
dv = .(Var1), # Variable dependiente
between = .(Group), # Factor entre sujetos
wid = .(Subject) # ID de los sujetos o identificador único
)
# Realizar ANOVA de medidas repetidas
ezANOVA(
data = data,
dv = .(Var1), # Variable dependiente
wid = .(Subject), # Variable de sujeto
within = .(Condition) # Condiciones (medidas repetidas)
)
%>%
) en R te facilira el análisis de datos, especialmente si eres principiante.%>%
, proporcionado por el paquete magrittr (parte de Tidyverse, lo veremos más a detalle adelante), permite encadenar una serie de operaciones de forma fluida.Con las tuberías, el flujo de las operaciones sigue el orden en que se leen naturalmente los pasos en lugar de anidar funciones (lo cual puede ser confuso). El código se estructura de arriba a abajo, como si fuera una receta de cocina.
Aunque todavía no entiendas las funciones, observa cómo encadenamos las operaciones vs cómo se haría sin pipas. ¿Puedes seguir la lógica del código en los dos casos?
summary(select(filter(data, Group == "A"), Var1))
, primero filtramos los datos filter(data, Group == "A")
, luego seleccionamos la variable (select()
) y finalmente mostramos el resumen summary()
.Como verás en el curso, muchas funciones de R se pueden encadenar de esta manera. Observa cómo ahora encadenamos un gráfico a nuestro código anterior. Esto se verá más adelante en el curso.
filter()
filtra observaciones de tus datos, select()
selecciona variables específicas,