Warning: package 'ggplot2' was built under R version 4.3.3
library(readxl)
Warning: package 'readxl' was built under R version 4.3.3
library(corrplot)
Warning: package 'corrplot' was built under R version 4.3.3
corrplot 0.92 loaded
library(dplyr)
Warning: package 'dplyr' was built under R version 4.3.3
Attaching package: 'dplyr'
The following objects are masked from 'package:stats':
filter, lag
The following objects are masked from 'package:base':
intersect, setdiff, setequal, union
PREPARACIÓN DE NUESTRO ENTORNO
1. Carga de datos
El primer paso es cargar el conjunto de datos en R Studio. Esto se puede hacer utilizando funciones como read.csv() para archivos CSV, read_excel() para archivos de Excel, o read.table() para archivos de texto.
Una vez cargados los datos, es importante realizar una visualización inicial para comprender la distribución de las variables y detectar posibles patrones o tendencias. Esto se puede hacer utilizando funciones de visualización como hist(), plot(), boxplot(), barplot(), entre otras.
HISTOGRAMA
var_relev <-c("Area", "Perimeter", "Extent")par(mfrow=c(1,3)) # Dividir el área de la gráfica en 1 fila y 2 columnasfor (variable in var_relev) {hist(rs[[variable]], main=variable, col.main="maroon", xlab=variable, col="hotpink1", border="magenta4", fg="orange")}
BOXPLOT
par(mfrow=c(1,3)) # Dividir el área de la gráfica en 1 fila y 2 columnasfor (variable in var_relev) {boxplot(rs[[variable]], main=variable,col.main="darkblue",col="aquamarine", border="navyblue", fg="orange",horizontal=TRUE)}
3. Resumen estadístico
Calcular estadísticas descriptivas básicas para cada variable es esencial para comprender la naturaleza de los datos. Esto incluye medidas como la media, la mediana, la desviación estándar, el mínimo, el máximo y los cuartiles. La función summary() proporciona un resumen estadístico rápido de todas las variables.
summary(rs)
Area MajorAxisLength MinorAxisLength Eccentricity
Min. : 25387 Min. :225.6 Min. :143.7 Min. :0.3487
1st Qu.: 59348 1st Qu.:345.4 1st Qu.:219.1 1st Qu.:0.7418
Median : 78902 Median :407.8 Median :247.8 Median :0.7988
Mean : 87804 Mean :430.9 Mean :254.5 Mean :0.7815
3rd Qu.:105028 3rd Qu.:494.2 3rd Qu.:279.9 3rd Qu.:0.8426
Max. :235047 Max. :997.3 Max. :492.3 Max. :0.9621
ConvexArea Extent Perimeter Class
Min. : 26139 Min. :0.3799 Min. : 619.1 Length:900
1st Qu.: 61513 1st Qu.:0.6709 1st Qu.: 966.4 Class :character
Median : 81651 Median :0.7074 Median :1119.5 Mode :character
Mean : 91186 Mean :0.6995 Mean :1165.9
3rd Qu.:108376 3rd Qu.:0.7350 3rd Qu.:1308.4
Max. :278217 Max. :0.8355 Max. :2697.8
Identificar y manejar los valores faltantes es crucial para evitar sesgos en el análisis. Se pueden utilizar funciones como is.na() para identificar los valores faltantes y luego decidir si eliminarlos, imputarlos o manejarlos de alguna otra manera.
# Verificar si hay datos faltantes en cada columnamissing_values <-colSums(is.na(rs))# Contar el total de datos faltantestotal_missing <-sum(is.na(rs))# Mostrar el número de datos faltantes por columnaprint(missing_values)
Area MajorAxisLength MinorAxisLength Eccentricity ConvexArea
0 0 0 0 0
Extent Perimeter Class
0 0 0
# Mostrar el total de datos faltantesprint(total_missing)
[1] 0
5. Exploración de relaciones entre variables
Analizar las relaciones entre las diferentes variables puede revelar patrones interesantes y ayudar a generar hipótesis para investigar más a fondo. Esto se puede hacer mediante el cálculo de correlaciones utilizando cor() y mediante la creación de gráficos de dispersión utilizando plot() o ggplot2.
#transformar rs en un valor numericors_numeric<-rs[sapply(rs, is.numeric)]# Calcular la matriz de correlacióncorrelation_matrix2 <-cor(rs_numeric)# Imprimir la matriz de correlaciónprint(correlation_matrix2)
# Crear gráficos de dispersión para las relaciones entre las variables# Puedes personalizar esto según tus necesidades y seleccionar las variables que deseas compararscatter_plots <-ggplot(rs, aes(x = Area, y = Perimeter)) +geom_point() +labs(x ="Area",y ="Perimeter") +ggtitle("Relación entre el Area y Perimeter")# Mostrar los gráficos de dispersiónprint(scatter_plots)
6. Identificación de valores atípicos
Los valores atípicos pueden influir significativamente en los resultados del análisis y deben ser identificados y tratados adecuadamente. Se pueden utilizar gráficos de caja (boxplot()) o técnicas estadísticas como el rango intercuartílico para identificar valores atípicos potenciales.
# Supongamos que queremos detectar valores atípicos en la variable "medv" (valor medio de las viviendas)# Calcular el rango intercuartílico (IQR)Q1 <-quantile(rs$Area, 0.25)Q3 <-quantile(rs$Area, 0.75)IQR_valor <- Q3 - Q1# Definir los límites superior e inferior para identificar valores atípicoslimite_inferior <- Q1 -1.5* IQR_valorlimite_superior <- Q3 +1.5* IQR_valor# Identificar valores atípicosvalores_atipicos <- rs$Area[rs$Area < limite_inferior | rs$Area > limite_superior]# Imprimir los valores atípicosprint(valores_atipicos)
En algunos casos, puede ser útil transformar las variables para cumplir con ciertas suposiciones de los modelos estadísticos o para mejorar la interpretación de los resultados. Esto puede incluir transformaciones logarítmicas, cuadráticas o de otro tipo.
rs_num3<-data.frame(rs$Area, rs$MajorAxisLength, rs$MinorAxisLength, rs$Eccentricity, rs$ConvexArea, rs$Extent, rs$Perimeter)par(mar =c(3, 3, 1, 1)) # Organizar las gráficas en un arreglo de 4x4for (i in1:ncol(rs_num3)) {hist(rs_num3[,i], main =colnames(rs_num3)[i], xlab ="", col="aquamarine", border="purple")}
# Aplicar una transformación logarítmica a la variable Arears_num3$log_rs.Area <-log(rs_num3$rs.Area)# Crear el histograma de Areahist(rs_num3$log_rs.Area, main ="Histograma de log (rs.Area)", xlab ="log(Area)",ylab ="Frecuencia",col ="pink",border ="purple")
8. Análisis multivariable
Explorar las relaciones entre múltiples variables a la vez es fundamental para comprender la complejidad de los datos. Esto se puede hacer mediante técnicas como el análisis de componentes principales (PCA) o mediante la visualización de múltiples variables en un solo gráfico utilizando técnicas como el mapeo de calor o los gráficos de pares.
#install.packages("reshape2")library(reshape2)
Warning: package 'reshape2' was built under R version 4.3.3
# Calcular la matriz de correlación para el conjunto de datos Bostoncorrelation_matrix <-cor(rs_numeric)# Crear un gráfico de mapa de calor utilizando ggplot2ggplot(data =melt(correlation_matrix), aes(x = Var1, y = Var2, fill = value)) +geom_tile(color ="white") +scale_fill_gradient2(low ="blue", high ="red", mid ="white", midpoint =0, limit =c(-1,1), space ="Lab",name="Correlation") +theme_minimal() +theme(axis.text.x =element_text(angle =90, vjust =0.5, hjust=1)) +coord_fixed()
Análisis de Componentes Principales (PCA)}
# Cargar el paquete necesitado para PCAlibrary(stats)# Seleccionar las variables numéricas relevantes para PCAvars_pca <-subset(rs_num3, select =c("rs.Area", "rs.MajorAxisLength", "rs.MinorAxisLength", "rs.Eccentricity", "rs.ConvexArea", "rs.Extent", "rs.Perimeter"))# Realizar PCApca_result <-prcomp(vars_pca, scale. =TRUE)# Resumen del PCAsummary(pca_result)
Standard deviations: Estos valores representan las desviaciones estándar de los componentes principales. Son la raíz cuadrada de los valores propios, que indican la cantidad de variación explicada por cada componente principal. Cuanto mayor sea la desviación estándar, más importante es el componente.
Proportion of Variance: Esta columna muestra la proporción de varianza explicada por cada componente principal. Cuanto mayor sea este valor, más variabilidad de los datos explica el componente correspondiente. Por ejemplo, un valor del 0.30 indica que el componente explica el 30% de la variabilidad en los datos.
Cumulative Proportion: Esta columna indica la proporción acumulativa de varianza explicada por los componentes principales. Es útil para determinar cuántos componentes principales son necesarios para explicar una cantidad significativa de variabilidad en los datos. Por ejemplo, si el valor es 0.80, significa que los primeros componentes principales explican el 80% de la variabilidad total en los datos.
# Obtener los componentes principalespcs <- pca_result$rotation
NOTA: Los componentes principales se encuentran listados en el resumen del PCA en orden descendente de importancia, es decir, el primer componente principal es el que explica la mayor parte de la variabilidad en los datos, seguido por el segundo componente principal, y así sucesivamente. Por lo tanto, para determinar cuáles son los componentes principales, simplemente observamos la primera columna del resumen, que muestra las desviaciones estándar de los componentes principales. Los componentes principales se enumeran de arriba hacia abajo en función de su importancia, con el primer componente principal en la parte superior y el último en la parte inferior.