Los diagramas de dispersión son herramientas gráficas que permiten visualizar la relación entre dos variables. En el caso de la base de datos Iris, podemos crear un diagrama de dispersión para observar la relación entre el largo y el ancho del sépalo.
# Código para el diagrama de dispersión
library(ggplot2)
# Cargar la base de datos Iris
data(iris)
# Crear el diagrama de dispersión
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
geom_point(alpha = 0.6) +
labs(title = "Diagrama de Dispersión: Sepal.Length vs Sepal.Width",
x = "Longitud del Sépalo",
y = "Ancho del Sépalo") +
theme_minimal()
Interpretación:
setosa
, versicolor
, y virginica
se agrupan en diferentes regiones, sugiriendo que hay diferencias claras
en sus características. Esto puede ayudar a la clasificación de las
especies basándose en estas variables.La tabla de frecuencias es una forma de resumir datos categóricos. Permite contar cuántas veces aparece cada categoría. En el caso de la base de datos Iris, podemos crear una tabla de frecuencias que muestre la cantidad de observaciones para cada especie de flor.
# Cargar la base de datos Iris
data(iris)
# Crear intervalos para el largo del sépalo
iris$Sepal.Length.Binned <- cut(iris$Sepal.Length, breaks = 5)
# Crear la tabla de frecuencias cruzadas
frecuencias <- table(iris$Species, iris$Sepal.Length.Binned)
# Mostrar la tabla
print(frecuencias)
##
## (4.3,5.02] (5.02,5.74] (5.74,6.46] (6.46,7.18] (7.18,7.9]
## setosa 28 21 1 0 0
## versicolor 3 18 20 9 0
## virginica 1 2 21 15 11
(4.3, 5.02] | (5.02, 5.74] | (5.74, 6.46] | (6.46, 7.18] | (7.18, 7.9] | |
---|---|---|---|---|---|
setosa | 28 | 21 | 1 | 0 | 0 |
versicolor | 3 | 18 | 20 | 9 | 0 |
virginica | 1 | 2 | 21 | 15 | 11 |
setosa
tiene la mayor cantidad de
observaciones en el primer intervalo (4.3, 5.02], con 28 individuos, lo
que sugiere que la mayoría de las flores de esta especie tienen un ancho
de sépalo bastante bajo.setosa
tiende a tener un ancho de
sépalo más pequeño en comparación con las otras especies.versicolor
muestra una distribución más
uniforme. Hay 3 observaciones en el primer intervalo y 18 en el
segundo.versicolor
tiene un ancho de sépalo
más variable, pero tiende a concentrarse en un rango medio.virginica
tiene un patrón diferente, con
solo 1 observación en el primer intervalo y 2 en el segundo.virginica
tiene los
anchos de sépalo más grandes entre las tres especies.Ahora pensemos de esta manera:
# Cargar la base de datos Iris
data(iris)
# Crear intervalos para el largo y ancho del sépalo
iris$Sepal.Length.Binned <- cut(iris$Sepal.Length, breaks = 5)
iris$Sepal.Width.Binned <- cut(iris$Sepal.Width, breaks = 5)
# Crear la tabla de frecuencias cruzadas
frecuencias <- table(iris$Sepal.Length.Binned, iris$Sepal.Width.Binned)
# Mostrar la tabla
print(frecuencias)
##
## (2,2.48] (2.48,2.96] (2.96,3.44] (3.44,3.92] (3.92,4.4]
## (4.3,5.02] 4 2 21 5 0
## (5.02,5.74] 3 13 9 13 3
## (5.74,6.46] 4 23 14 0 1
## (6.46,7.18] 0 4 20 0 0
## (7.18,7.9] 0 4 4 3 0
(2, 2.48] | (2.48, 2.96] | (2.96, 3.44] | (3.44, 3.92] | (3.92, 4.4] | |
---|---|---|---|---|---|
(4.3, 5.02] | 4 | 2 | 21 | 5 | 0 |
(5.02, 5.74] | 3 | 13 | 9 | 13 | 3 |
(5.74, 6.46] | 4 | 23 | 14 | 0 | 1 |
(6.46, 7.18] | 0 | 4 | 20 | 0 | 0 |
(7.18, 7.9] | 0 | 4 | 4 | 3 |
La covarianza es una medida que indica la dirección de la relación lineal entre dos variables. Se calcula utilizando la siguiente fórmula:
\[ \text{Cov}(X, Y) = \frac{1}{n-1} \sum_{i=1}^{n} (X_i - \bar{X})(Y_i - \bar{Y}) \]
Ejemplo: Calculemos la covarianza entre el largo y el ancho del sépalo.
# Código para calcular la covarianza
covarianza <- cov(iris$Sepal.Length, iris$Sepal.Width)
print(covarianza)
Interpretación: - Un resultado positivo de la covarianza indicaría que a medida que el largo del sépalo aumenta, el ancho también tiende a aumentar. Si, por ejemplo, la covarianza es aproximadamente 0.1, esto sugiere que hay una relación débil y positiva entre estas dos variables.
El coeficiente de correlación (usualmente el coeficiente de correlación de Pearson) mide la fuerza y la dirección de la relación lineal entre dos variables. Se calcula como:
\[ r = \frac{\text{Cov}(X, Y)}{\sigma_X \sigma_Y} \]
Ejemplo: Calculemos el coeficiente de correlación entre el largo y el ancho del sépalo.
# Código para calcular el coeficiente de correlación
correlacion <- cor(iris$Sepal.Length, iris$Sepal.Width)
print(correlacion)
## [1] -0.1175698
Interpretación: - Un valor de correlación cercano a 1 indica una fuerte relación positiva, mientras que un valor cercano a -1 indica una fuerte relación negativa. Si, por ejemplo, obtenemos un coeficiente de correlación de 0.87, esto sugiere una fuerte correlación positiva entre el largo y el ancho del sépalo, indicando que a medida que aumenta el largo, el ancho también tiende a aumentar.
El coeficiente de correlación, comúnmente representado por \(r\), es una medida estadística que indica la fuerza y la dirección de una relación lineal entre dos variables. Su valor varía entre -1 y 1, y su interpretación es la siguiente:
\(r = 1\): Indica una correlación positiva perfecta. Esto significa que, a medida que una variable aumenta, la otra también lo hace de manera exacta. Por ejemplo, si aumentamos la altura de una planta, su peso también aumentará en una proporción constante.
\(0 < r < 1\): Indica una correlación positiva. A medida que el valor de una variable aumenta, también lo hace la otra, pero no de forma perfecta. Por ejemplo, un \(r = 0.8\) sugiere una fuerte relación positiva, mientras que \(r = 0.3\) indica una relación débil.
\(r = 0\): Indica que no hay correlación lineal entre las dos variables. Esto significa que el cambio en una variable no está relacionado con el cambio en la otra. Por ejemplo, la altura de una planta y el número de hojas pueden no estar correlacionados.
\(-1 < r < 0\): Indica una correlación negativa. A medida que una variable aumenta, la otra disminuye. Por ejemplo, un \(r = -0.5\) sugiere una relación negativa moderada, lo que significa que a medida que una variable aumenta, la otra tiende a disminuir, aunque no de manera exacta.
\(r = -1\): Indica una correlación negativa perfecta. En este caso, cualquier aumento en una variable se traduce en una disminución exacta en la otra.
No Causalidad: Es crucial recordar que el coeficiente de correlación no implica causalidad. Una alta correlación entre dos variables no significa que una cause la otra; pueden estar influenciadas por una tercera variable o ser el resultado de coincidencias.
Linealidad: El coeficiente de correlación mide solo relaciones lineales. Si la relación entre las variables es no lineal, el valor de \(r\) puede ser engañoso.
Sensibilidad a Valores Atípicos: Los valores atípicos pueden tener un impacto significativo en el coeficiente de correlación, distorsionando la percepción de la relación entre las variables.
En resumen, el coeficiente de correlación es una herramienta útil para evaluar la relación entre dos variables, pero debe interpretarse con cautela y en el contexto adecuado.
Para calcular todas las correlaciones entre las variables de la base de datos Iris en R, puedes usar la función ‘cor()’. Aquí tienes un ejemplo de cómo hacerlo:
# Cargar la base de datos Iris
data(iris)
# Calcular las correlaciones entre las variables numéricas
correlaciones <- cor(iris[, 1:4]) # Seleccionamos solo las columnas numéricas
print(correlaciones)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Sepal.Length 1.0000000 -0.1175698 0.8717538 0.8179411
## Sepal.Width -0.1175698 1.0000000 -0.4284401 -0.3661259
## Petal.Length 0.8717538 -0.4284401 1.0000000 0.9628654
## Petal.Width 0.8179411 -0.3661259 0.9628654 1.0000000
Para calcular todas las correlaciones entre las variables de la base
de datos Iris en R, puedes usar la función cor()
. Aquí
tienes un ejemplo de cómo hacerlo:
El resultado será una matriz de correlación que muestra las
correlaciones entre las cuatro variables numéricas:
Sepal.Length
, Sepal.Width
,
Petal.Length
y Petal.Width
.
Sepal.Length
y
Petal.Length
tienen una correlación de
aproximadamente 0.87, indicando una fuerte relación positiva: a medida
que aumenta el largo del sépalo, también lo hace el largo del
pétalo.Sepal.Width
y
Petal.Length
tienen una correlación de
aproximadamente -0.43, lo que sugiere una relación negativa
moderada.Para visualizar la matriz de correlación de la base de datos Iris en
R, puedes usar el paquete corrplot
. Aquí tienes un ejemplo
de cómo hacerlo:
# Instalar y cargar el paquete corrplot si no lo tienes instalado
library(corrplot)
## corrplot 0.94 loaded
# Cargar la base de datos Iris
data(iris)
# Calcular las correlaciones entre las variables numéricas
correlaciones <- cor(iris[, 1:4]) # Seleccionamos solo las columnas numéricas
# Crear el gráfico de correlación
corrplot(correlaciones, method = "circle", type = "upper",
tl.col = "black", tl.srt = 45,
title = "Matriz de Correlación - Iris",
addCoef.col = "black") # Añadir los coeficientes de correlación
cor(iris[, 1:4])
: Calcula la matriz de
correlación para las cuatro variables numéricas.corrplot()
: Crea el gráfico de la
matriz de correlación.
method = "circle"
indica que se utilizarán círculos
para representar las correlaciones.type = "upper"
muestra solo la parte superior de la
matriz.tl.col = "black"
y tl.srt = 45
establecen
el color y la inclinación de las etiquetas.addCoef.col = "black"
añade los coeficientes de
correlación en el gráfico.Este código generará un gráfico donde cada círculo representa el grado de correlación entre las variables, con colores que indican la fuerza y dirección de la correlación. Los números en el gráfico mostrarán los valores del coeficiente de correlación.
Para cada par de variables \(x\) (variable independiente) y \(y\) (variable dependiente), la ecuación de la recta de regresión se expresa como:
\[ y = \beta_0 + \beta_1 x \]
Donde: - \(\beta_0\) es la intersección (intercepto) de la recta en el eje \(y\). - \(\beta_1\) es la pendiente de la recta, que representa el cambio en \(y\) por cada unidad de cambio en \(x\).
Los coeficientes de la regresión se calculan de la siguiente manera:
Pendiente (\(\beta_1\)): \[ \beta_1 = \frac{\text{cov}(X, Y)}{\text{var}(X)} \]
Intercepto (\(\beta_0\)): \[ \beta_0 = \bar{Y} - \beta_1 \bar{X} \] donde \(\bar{Y}\) y \(\bar{X}\) son las medias de \(Y\) y \(X\), respectivamente.
Claro, aquí te presento el código para calcular y graficar las rectas de regresión entre las variables de la base de datos Iris, incluyendo las fórmulas de la recta de regresión y cómo se calculan.
# Cargar la base de datos Iris
data(iris)
# Definir una función para graficar la recta de regresión y mostrar la fórmula
plot_regression <- function(x, y, xlab, ylab) {
plot(x, y, main = paste("Regresión entre", xlab, "y", ylab),
xlab = xlab, ylab = ylab, pch = 19, col = iris$Species)
# Ajustar el modelo de regresión
model <- lm(y ~ x)
# Agregar la recta de regresión
abline(model, col = "blue", lwd = 2)
# Calcular los coeficientes
intercept <- coef(model)[1]
slope <- coef(model)[2]
# Mostrar la fórmula en el gráfico
formula_text <- paste("y =", round(intercept, 2), "+", round(slope, 2), "* x")
legend("topright", legend = formula_text, bty = "n", col = "blue", cex = 0.8)
# Leyenda para las especies
legend("topleft", legend = levels(iris$Species), col = unique(iris$Species), pch = 19)
}
# Graficar las rectas de regresión para todas las combinaciones de variables
par(mfrow = c(2, 2)) # Configurar la disposición de gráficos
plot_regression(iris$Sepal.Length, iris$Sepal.Width, "Longitud del Sépalo", "Ancho del Sépalo")
plot_regression(iris$Sepal.Length, iris$Petal.Length, "Longitud del Sépalo", "Longitud del Pétalo")
plot_regression(iris$Sepal.Length, iris$Petal.Width, "Longitud del Sépalo", "Ancho del Pétalo")
plot_regression(iris$Sepal.Width, iris$Petal.Length, "Ancho del Sépalo", "Longitud del Pétalo")
# Restablecer la configuración del gráfico
par(mfrow = c(1, 1))
ggplot2
# Instalar y cargar el paquete ggplot2 si no lo tienes instalado
install.packages("ggplot2")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
library(ggplot2)
# Crear una función para graficar la regresión
plot_regression_ggplot <- function(data, x, y, xlab, ylab) {
p <- ggplot(data, aes_string(x = x, y = y, color = "Species")) +
geom_point() + # Agregar los puntos
geom_smooth(method = "lm", se = FALSE, color = "blue") + # Agregar la recta de regresión
labs(title = paste("Regresión entre", xlab, "y", ylab),
x = xlab, y = ylab) +
theme_minimal()
print(p)
}
# Graficar las rectas de regresión para todas las combinaciones de variables
plot_regression_ggplot(iris, "Sepal.Length", "Sepal.Width", "Longitud del Sépalo", "Ancho del Sépalo")
## Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
## ℹ Please use tidy evaluation idioms with `aes()`.
## ℹ See also `vignette("ggplot2-in-packages")` for more information.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
## `geom_smooth()` using formula = 'y ~ x'
plot_regression_ggplot(iris, "Sepal.Length", "Petal.Length", "Longitud del Sépalo", "Longitud del Pétalo")
## `geom_smooth()` using formula = 'y ~ x'
plot_regression_ggplot(iris, "Sepal.Length", "Petal.Width", "Longitud del Sépalo", "Ancho del Pétalo")
## `geom_smooth()` using formula = 'y ~ x'
plot_regression_ggplot(iris, "Sepal.Width", "Petal.Length", "Ancho del Sépalo", "Longitud del Pétalo")
## `geom_smooth()` using formula = 'y ~ x'
Carga de la biblioteca: Se carga el paquete
ggplot2
para la visualización de datos.
Función plot_regression_ggplot
:
Esta función toma un marco de datos y las variables que deseas graficar.
Utiliza ggplot
para crear el gráfico:
geom_point()
: Agrega los puntos de los datos.geom_smooth(method = "lm", se = FALSE, color = "blue")
:
Agrega la recta de regresión sin mostrar el intervalo de confianza (se =
FALSE).labs()
: Establece el título y las etiquetas de los
ejes.theme_minimal()
: Aplica un tema limpio y minimalista al
gráfico.Graficar combinaciones: Se llaman a la función
plot_regression_ggplot
para crear gráficos de regresión
para las combinaciones de variables deseadas.
Este código generará gráficos que muestran la relación entre las diferentes variables de la base de datos Iris, con las rectas de regresión que mejor se ajustan a los datos en color azul.
ggplot2
proporciona
gráficos estéticamente agradables y personalizables.La gráfica Q-Q es una herramienta gráfica utilizada para evaluar si una distribución de datos sigue una distribución teórica específica, como la normal. Esta gráfica compara los cuantiles de la muestra con los cuantiles de una distribución teórica. Si los puntos en la gráfica Q-Q siguen aproximadamente una línea recta, esto sugiere que los datos se distribuyen de manera similar a la distribución teórica.
A continuación, te muestro cómo crear una gráfica Q-Q para la longitud del sépalo en la base de datos Iris y evaluarla con respecto a la distribución normal.
# Cargar la base de datos Iris
data(iris)
# Crear una gráfica Q-Q para Sepal.Length
qqnorm(iris$Sepal.Length, main = "Gráfica Q-Q de Sepal.Length")
qqline(iris$Sepal.Length, col = "red") # Agregar la línea de referencia
qqnorm()
: Esta función crea la gráfica
Q-Q para la variable seleccionada. En este caso,
Sepal.Length
.qqline()
: Agrega una línea de
referencia a la gráfica, que representa la expectativa de que los datos
siguen la distribución normal.¡Sí, puedes crear gráficos Q-Q en ggplot2
utilizando la
función geom_qq()
! A continuación, te muestro cómo hacerlo
con la base de datos Iris, específicamente para la variable
Sepal.Length
.
ggplot2
# Cargar el paquete ggplot2 si no lo tienes instalado
library(ggplot2)
# Crear la gráfica Q-Q para Sepal.Length
ggplot(iris, aes(sample = Sepal.Length)) +
geom_qq() + # Agregar los puntos Q-Q
geom_qq_line(color = "red") + # Agregar la línea de referencia
labs(title = "Gráfica Q-Q de Sepal.Length",
x = "Cuantiles Teóricos",
y = "Cuantiles de Sepal.Length") +
theme_minimal()
ggplot2
.aes(sample = Sepal.Length)
: Especifica que los
cuantiles de la variable Sepal.Length
se usarán para la
gráfica Q-Q.geom_qq()
: Agrega los puntos de la gráfica Q-Q.geom_qq_line(color = "red")
: Agrega una línea de
referencia roja que muestra la expectativa de que los datos sigan una
distribución normal.labs()
: Establece el título y las etiquetas de los
ejes.theme_minimal()
: Aplica un tema minimalista al
gráfico.El gráfico mostrará los cuantiles de Sepal.Length
en el
eje y y los cuantiles teóricos de la distribución normal en el eje x. Si
los puntos siguen aproximadamente la línea de referencia roja, esto
sugiere que la variable Sepal.Length
tiene una distribución
similar a la normal.
ggplot2
para comparar otras distribuciones
teóricas si es necesario.