library(dplyr)
library(datos)
library(ggplot2)
library(descriptr)
library(flextable)
library(modeest)
library(moments)
En esta parte se desarrollará todo el análisis decriptivo numérico, esto significa que solo se puede realizar para variables cuantitativas.
Aquí se tratará con todas las medidas que permitirán describir un conjunto de datos. Estas son:
**1. Medidas de Tendencia Central
Primero se tomará una muestra de 1000 registros de la base de datos diamantes del paquete datos
Esta muestra aleatoria se usa tomando una semilla con valor de 258.
set.seed(258)
datos.d <- sample_n(diamantes, size = 1000,replace = FALSE)
str(datos.d)
## tibble [1,000 × 10] (S3: tbl_df/tbl/data.frame)
## $ precio : int [1:1000] 17068 8917 2738 5242 11365 2527 1774 1952 5939 9333 ...
## $ quilate : num [1:1000] 2.12 1.54 0.77 0.9 1.03 0.74 0.54 0.7 1.01 1.24 ...
## $ corte : Ord.factor w/ 5 levels "Regular"<"Bueno"<..: 5 4 5 5 5 4 5 3 4 5 ...
## $ color : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 6 6 5 2 3 2 3 7 1 3 ...
## $ claridad : Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 4 4 4 5 8 2 5 4 3 5 ...
## $ profundidad: num [1:1000] 62.7 61.7 62 61.3 61.3 61.3 61.1 61.1 62.3 62.2 ...
## $ tabla : num [1:1000] 56 59 56 57 56 59 57 61 60 55 ...
## $ x : num [1:1000] 8.16 7.4 5.86 6.24 6.53 5.83 5.28 5.64 6.4 6.89 ...
## $ y : num [1:1000] 8.24 7.34 5.89 6.2 6.55 5.78 5.3 5.69 6.35 6.87 ...
## $ z : num [1:1000] 5.14 4.55 3.64 3.81 4.01 3.56 3.23 3.46 3.97 4.28 ...
head(datos.d,c(5,5))
## # A tibble: 5 × 5
## precio quilate corte color claridad
## <int> <dbl> <ord> <ord> <ord>
## 1 17068 2.12 Ideal I VS2
## 2 8917 1.54 Premium I VS2
## 3 2738 0.77 Ideal H VS2
## 4 5242 0.9 Ideal E VS1
## 5 11365 1.03 Ideal F IF
Para obtener la media, la mediana y la moda se usan las funciones mean y median del paquete base de r y fmv del paquete modeest para encontrar la moda.
La fórmula para la media es:
\[ \bar{x} = \frac{1}{n}\sum_{i =1}^n{x_i} \] La fórmula para posición en donde está la mediana, \(M\) es:
\[ M = \begin{cases} \ x_{(\frac {n+1}{2})} & \text{si n es impar} \\ \frac {x_{(\frac {n}{2})}+x_{(\frac {n+1}{2})}}{2} & \text{si n es par} \end{cases} \] La moda es el dato que más repite o el que tiene mayor frecuencia. Puede pasar que ewxistan más de una moda.
Ejemplo
Encontrar las medidas de tendencia central para la variable precio
## El promedio del precio de los diamantes en la muestra es: 4159.333
## La mediana del precio es: 2564.5
## la moda(s) del precio de los diamanmtes es: 911
Nota para la mediana se ordenan los datos y se aplica la fórmula
attach(datos.d)
o <- sort(precio)
(o[1000/2] +o[(1000/2+1)])/2
## [1] 2564.5
Medidas de variabilidad
Estas medidas cuantifican qué tan dispersos se encuentran los datos con respecto a una medida de tendencia central; la medida de tendencia central más usada es el promedio. La primera medida que se va a estudiar es el rango que la medida más simple y no tiene en cuenta el promedio, la mediana o la moda.
Se define como la diferencia entre el dato mayor y el dato menor.
\[ \small Rango = \text {dato mayor - dato menor} \] La varianza es la medida más usada para medir la dispersión de los datos. Se hace con respecto a la media y se simboliza con la letra \(S^2\) y su fórmula es:
\[ \small S^2 = \frac {1}{n-1}\sum_{i =1}^n{(x_i-\bar{x})^2} \] La desviación estándar es la raíz cuadrada de la varianza, su símbolo es \(S\).
\[ \small S = \sqrt {S^2} \]
Por último, se define el coeficiente de variació como el cociente entre la desviación estandar y el promedio.
\[ \small CV = \frac {s}{\bar{x}}*100 \]
Ejemplo
Se encontrarán las medidas de variabilidad para el precio de los diamantes en la base de datos.
rango.d <- max(precio)-min(precio)
cat("El rango del precio de los diamantes es:", rango.d)
## El rango del precio de los diamantes es: 18374
varianza.d <- var(precio)
cat("la varianza del precio de los diamantes es:", varianza.d)
## la varianza del precio de los diamantes es: 18008012
desv_est.d <- sd(precio)
cat("la desviación estándar del precio de los diamantes es:",desv_est.d)
## la desviación estándar del precio de los diamantes es: 4243.585
coef_var.d <- (desv_est.d/promedio.d)*100
cat("El coeficiente de variación del precio de los diamantes es:", coef_var.d)
## El coeficiente de variación del precio de los diamantes es: 102.0256
Medidas de posición
Cuartiles
*Cuartiles: Dividen un conjunto de datos ordenado en 4 partes iguales y lo que indica es la posición del datos que tiene hacia atrás un % de la información. Se simbolizan: \(Q_1, Q_2,Q_3\) El \(Q_i \text{, } i = 1,2,3\) da la posición del datos ordenado que tiene hacia atrás el $ 100%$ de la información y es superado por el \(1-\frac {i}{4}\ 100\%\) de ella
*Percentiles Dividen un conjunto de datos ordenado en 100 partes iguales y lo que indica es la posición del datos que tiene hacia atrás un porcentaje de la información. Se simbolizan: \(P_1, P_2,...,P_{100}\)
El \(P_i \text{, } i = 1,2,3..,100\) es la posición del datos ordenado que tiene hacia atrás el $ 100%$ de la información y es superado por el \((1-\frac {i}{100})\ 100\%\)
La fórmula para la posición del percentil \(k\):
\[ P_k = \frac {(n+1)k}{100}, \\ \] donde \(k\) es la posición y \(n\) el número de datos.
Ejemplo: Encontrar los percentiles, 10, 25, 30, 50, 75 y 80 del precio de los diamantes en la base de datos datos.d
percent <- quantile(x = datos.d$precio, probs = c(0.1,0.25,0.3,0.5,0.75,0.8), type = 6)
percent
## 10% 25% 30% 50% 75% 80%
## 670.1 1000.5 1125.3 2564.5 5741.5 6617.6
La formula para encontrar la posición de un percentil
**ejemplo con la fórmula*
Encontrar el percentil 25.
Primero encontramos la posición del percentil 25
n <- length(datos.d$precio)
pos.25 <- (n+1)*25/100
pos.25
## [1] 250.25
cat("la posicion en donde se encuentra el percentil 25 es", pos.25)
## la posicion en donde se encuentra el percentil 25 es 250.25
Se observa que el percentil 25 esta en la posición 250.25 y a 0.25 de la distancia entre el 251 y el 250 de los datos ordenados.
ord <- sort(datos.d$precio)
ord[250] + 0.25*(ord[251] - ord[250])
## [1] 1000.5
pos.80 <- (120+1)*80/100
pos.80
## [1] 96.8
ord <- sort(datos.d$precio)
ord[96] + 0.8*(ord[97] - ord[96])
## [1] 667.6
Diagrama de caja El box-plot se construye usando 5 números que son: El \(Q_1,Q_2,Q_3\) ademas de el límite inferior y limite superior. para encontrar estos limites se utiliza el rango intercuartílico, que es la diferencia entre el tercer y el primer cuartil \(RI = Q_3 - Q_1\) y las formulas para estos limites son:
\[ li = q_1 - 1.5*RI \\ ls = q_3 + 1.5*RI \]
q1 <- quantile(datos.d$precio,probs = 0.25);q1
## 25%
## 1001.5
q2 <- quantile(datos.d$precio,probs = 0.5);q2
## 50%
## 2564.5
q3 <- quantile(datos.d$precio,probs = 0.75);q3
## 75%
## 5732.5
ri <- q3 - q1;ri #Rango ntercualtilico
## 75%
## 4731
li <- q1 - 1.5*ri;li # limite inferior
## 25%
## -6095
ls <- q3 + 1.5*ri;ls # limite superior
## 75%
## 12829
Así, para el precio de los diamantes el diagrama de caja es:
boxplot(datos.d$precio,col = "skyblue", horizontal = TRUE, main = "Diagrama de caja para el precio de los diamantes", xlab = "precio de los diamantes")
hist(datos.d$precio, main = "Histograma del precio de los diamantes", col = "pink")
Medidas de formas
(https://www.universoformulas.com/estadistica/descriptiva/asimetria-curtosis/)
Coeficiente de asimetria
La asimetría y curtosis informan sobre la forma de la distribución de una variable. Estas medidas permiten saber las características de su asimetría y homgeneidad sin necesidad de representarlos gráficamente.
Calcular coeficiente de curtosis y asimeria para el precio de los diamantes en la base de datos
curtosis <- kurtosis(x = datos.d$precio);curtosis
## [1] 5.10721
asimet <- skewness(x = datos.d$precio); asimet
## [1] 1.626849
Coeficiente de curtosis
#p <- na.omin(pinguinos), p
#plot( x = p$masa, y = p$largo_aleta, main = "diagrama de dispercion para masa y aleta", col = "red")