# Generamos datos
data <- c(2, 5, 2, 3, 3, 4, 3, 2, 2, 3)
frequency_table <- table(data)
frequency_tabledata
2 3 4 5
4 4 1 1
Formación PDI - Universidad de Málaga
Análisis descriptivo numérico
Análisis descriptivo gráfico
Frecuencias absolutas:
# Generamos datos
data <- c(2, 5, 2, 3, 3, 4, 3, 2, 2, 3)
frequency_table <- table(data)
frequency_tabledata
2 3 4 5
4 4 1 1
Frecuencias relativas:
data <- c(-0.0266, 0.6195, 0.2362, -0.2401, -0.0056, -1.7052, 1.381,
0.1593, 0.5652, 0.4983)
# Define los intervalos
breaks <- c(-10, -5, 0, 5, 10)
# Crea la tabla de frecuencia usando cut() y table()
frequency_table <- table(cut(data, breaks=breaks, right=FALSE))
frequency_table
[-10,-5) [-5,0) [0,5) [5,10)
0 4 6 0
Para las frecuencias relativas:
| Función | Descripción |
|---|---|
table(x) |
Tabla de frecuencias absolutas v.a. discreta. |
prop.table(table(x)) |
Tabla de frecuencias relativas v.a. discreta. |
table(cut(data, breaks = breaks, right=FALSE)) |
Tabla de frecuencias absolutas v.a. continua |
prop.table(table(cut(data, breaks = breaks, right=FALSE))) |
Tabla de frecuencias relativas v.a. continua |
| Medida | Función | Descripción |
|---|---|---|
| Media | mean(x) |
Calcula la media de x. |
| Mediana | median(x) |
Devuelve la mediana de x. |
| Moda | table(x)[which.max(table(x))] |
Encuentra el valor más frecuente. |
| quantiles | quantile(x, probs = c(0.25, 0.5, 0.75)) |
Cuantiles específicos. |
| Medida | Función | Descripción |
|---|---|---|
| Varianza | var(x) |
Calcula la varianza muestral. |
| Desviación estándar | sd(x) |
Raíz cuadrada de la varianza. |
| Rango intercuartil | IQR(x) |
Diferencia entre el tercer y primer cuartil. |
| Mínimo y Máximo | min(x), max(x) |
Valores mínimo y máximo. |
| Rango | range(x) |
Devuelve [min, max]. |
| Función | Descripción |
|---|---|
summary(x) |
Resumen completo (mínimo, Q1, mediana, media, Q3, máximo). |
fivenum(x) |
Cinco estadísticos de Tukey (mínimo, Q1, mediana, Q3, máximo). |
| Función | Descripción |
|---|---|
table(x, y) |
Tablas bivariadas. |
cor(x, y) |
Correlación de Pearson. |
cov(x, y) |
Covarianza. |
Ejercicio: Implementamos la covarianza y la correlación. Aplicamos a Newscombe data set y dinousaur.
Resumen numérico:
📝 Carga la base de datos Anscombe. Utiliza el comando data(anscombe) para cargarlos.
📝 Calcula un resumen estadístico completo de las variables incluidas en la base de datos Anscombe. ¿Cómo son sus medias?
R incluye un sistema de gráficos nativo, conocido como R Base Graphics, que permite crear, personalizar y combinar visualizaciones sin paquetes externos.
Importante
Una librería relevante para la visualización es la conocida como ggplot2 que implementa lo que es conocido como “the Grammar of Graphics”. Este paquete nos da más flexibilidad y gráficos más estéticos. En este curso nos centraremos en los gráficos dados por Rbase.
plot()type: tipo de gráfico ("p", "l", "b", "h", etc.)col, pch, lty, lwd: color, símbolo, tipo y grosor de línea.xlim, ylim: límites de los ejesmain, xlab, ylab: títulos.Ejemplo:
| Tipo de gráfico | Función base | Descripción |
|---|---|---|
| Dispersión | plot() |
Dos variables numéricas |
| Líneas | lines() o plot(..., type="l") |
Series temporales |
| Barras | barplot() |
Comparación de categorías |
| Histograma | hist() |
Distribución de una variable |
| Caja | boxplot() |
Comparación de distribuciones |
| Tarta | pie() |
Porciones de un total |
| Densidad | plot(density(x)) |
Curva de densidad |
| Matriz de dispersión | pairs() |
Relaciones múltiples |
| Función | Qué añade | Ejemplo |
|---|---|---|
points() |
Puntos adicionales | points(x, y, col="red") |
lines() |
Líneas adicionales | lines(x, y, lty=2) |
abline() |
Rectas horizontales o verticales | abline(h=0, col="gray") |
text() |
Texto dentro del gráfico | text(5, 20, "Centro") |
legend() |
Leyenda | legend("topleft", legend="x²", col="blue", lty=1) |
title() |
Añadir título | title(main="Nuevo título") |
par()Permite modificar la apariencia del área de dibujo.
| Parámetro | Descripción | Ejemplo |
|---|---|---|
mfrow / mfcol |
Gráficos múltiples | par(mfrow=c(2,2)) |
mar |
Márgenes | par(mar=c(5,4,2,1)) |
bg |
Color de fondo | par(bg="lightgray") |
cex |
Tamaño de texto/puntos | par(cex=1.2) |
Dada una v.a. discreta \(X\) cuantitativa discreta o cualitativa, representa su función de probabilidad \(P(X=x)\) para todo \(x \in \Omega\).
Construcción:
Dada una v.a. discreta \(X\) continua, representa una aproximación gráfica elemental a su función de densidad \(f_X(x)\).
Construcción:
\[ F(X) = P(X \leq x) \]
\[ F_n^*(x) = \frac{ \# \{x_i \leq x \} }{n}.\]
Función de distribución muestral:
📝 Programa tu propia función distribución muestral que tenga como argumentos un valor dado de \(x_i\) y un vector de \(n = 10\) realizaciones de la variable aleatoria. Usa el siguiente vector \(x\) como ejemplo.
Función de distribución muestral en base R:
La estimación de densidad por kernel es un método no paramétrico para estimar la función de densidad de probabilidad de una variable continua a partir de una muestra.
Dada una v.a. discreta \(X\) continua, representa una aproximación gráfica más elaborada que un histograma a su función de densidad \(f_X(x)\).
Los estimadores de núcleo de la densidad se definen como:
\[\hat{f}(x) = \frac{1}{nh} \sum_{i=1}^n K\left(\frac{x-X_i}{h}\right),\]
donde
\(K\) → kernel o función nucleo. Cualquier función que verifica \(K > 0\) y \(\int K = 1\).
\(h > 0\) → bandwidth o ancho de banda. Parámetro de suavizado.
El Kernel Gaussiano se define como \[K(x)=\frac{1}{\sqrt{2\pi}}e^{-x^2/2}\].
Los valores
\[\frac{1}{h}K\left(\frac{x-X_i}{h}\right)\]
son funciones de densidad de v.a. con distribución normal y media \(X_i\) y desviación típica \(h\).
Comparación de anchos de banda:
# Estimación de densidad
dens <- density(datos, kernel="gaussian")
plot(dens, main="Estimación de densidad por kernel",
xlab="Valores", ylab="Densidad")
# Comparar anchos de banda
dens_suave <- density(datos, bw=1.5)
dens_detalle <- density(datos, bw=0.3)
lines(dens_suave, col="red", lwd=2)
lines(dens_detalle, col="blue", lwd=2)
legend("topright", legend=c("bw=1.5", "bw=0.3"), col=c("red","blue"), lwd=2)# Histograma con densidad en el eje y
hist(x,
freq = FALSE,
col = "lightgray",
border = "white",
main = "Histograma + Curva de densidad",
xlab = "Valor")
# Añadir curva de densidad
lines(density(x), col = "blue", lwd = 2)
legend("topright",
legend = c("Histograma", "Densidad"),
fill = c("lightgray", NA),
border = c("white", NA),
lty = c(NA, 1),
col = c(NA, "blue"),
lwd = c(NA, 2))El “range-bar method” por Mary Eleanor Spear, “Charting Statistics” in 1952 and “Practical Charting Techniques” in 1969.
El “box-and-whisker plot” (1970) by John Tukey, “Exploratory Data Analysis” in 1977.
Resumen gráfico bivariado:
📝 Añade la recta \(Y_1 = 0.5 + 10X_1\), usando la función abline.
📝 Representa los pares \((x_i, y_i)\) para \(i = 1, 2, 3, 4\). Usando la función plot y par(mfrow = ¿?).
Un Q-Q Plot compara los cuantiles de una muestra con los cuantiles teóricos de una distribución (usualmente la normal) o los cuantiles de otra muestra.
Sirve para evaluar visualmente si los datos se ajustan a esa distribución de referencia.
Si los puntos siguen la línea diagonal → los datos son aproximadamente de la misma distribución.
Si se desvían → los datos no parecen seguir la misma distribución.
Quantile-Quantile Plot:
📝 Lea el ejemplo con la cabecera ## "QQ-Chisquare" :. ¿Qué hace la line que llama a qqplot?
Se considera que una serie temporal \(Y_t\) con \(t = 1, 2, \dots, T\) es una función de tres componentes:
Modelo Aditivo: \[ Y_t = T_t + S_t + E_t \]
Modelo Multiplicativo: \[Y_t = T_t \times S_t \times E_t \]
Antonio Elías • Curso de R para Estadística