Listado de Librerias que se usaran durante el tema de Medidas de Tendencia Central, Dispersion y de Posiciòn:

library(fdth)
library(ggplot2)
library(psych)
library(moments)
library(plotly)

Medidas de Tendencia Central

Para la expliación del tema, primeramente definimos 10 calificaciones con valores enteros en el vector llamado “calificaciones”.

# 10 calificaciones con valores enteros
calificaciones = c(5, 7, 8, 8, 10, 9, 7, 6, 8, 9)

Exploración de Datos

Para la exploración de datos, para obtener un resumen del vector “calificaciones” usaremos summary , y ejecutamos str para saber de que tipo es el vector, y con head para ver el contenido del vector.

summary(calificaciones)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    5.00    7.00    8.00    7.70    8.75   10.00
str(calificaciones)
##  num [1:10] 5 7 8 8 10 9 7 6 8 9
head(calificaciones)
## [1]  5  7  8  8 10  9
tail(calificaciones)
## [1] 10  9  7  6  8  9

De los resultados mostrados con summary observamos que la calificación mínima es 5 y la máxima es 10. El promedio “Mean” es 7.70 y el valor de la mediana “Median” es 8.0.

str nos indica que los datos contenidos en la lista son num, es decir del tipo numericos y que el vector contiene 10 elemento [1:10].

head muestra los primeros 5 valores del vector por default

¿Que datos muestra el comando tail?, intenta la siguiente linea: head(calificaciones, n=-5)


Medidas de Tendecia Central

Media, Mediana y Moda

Para obtener el promedio o la media de los datos utilizamos mean. Para la mediana utilizamos median de los datos que es el valor medio de dichos datos. Recordemos que la mediana es el valor central, y el promedio es la suma total de las observaciones entre el número de observaciones.

No existe una función especifica en R para obtener la Moda de los datos, usaremos la función “table()” para el ejemplo

mean(calificaciones)
## [1] 7.7
median(calificaciones)
## [1] 8
# Una forma de encontrar la Moda de un vector de datos
table(calificaciones) # Usando Table(vector)
## calificaciones
##  5  6  7  8  9 10 
##  1  1  2  3  2  1
mode1 <- sort(table(calificaciones), decreasing = T) # Ordenamos el vector, y se asigna a la variable "mode1"
mode1   # Desplegamos la variable "mode1"
## calificaciones
##  8  7  9  5  6 10 
##  3  2  2  1  1  1

Observamos que el promedio es 7.7 y que la media de los datos es 8

Podemos observar que la calificación 8 se repite 3 veces, el 7 dos veces y asi consecutivamente, por lo tanto la moda es 8, ya que es el que repite mas veces.

Para obtener una tabla de frecuencias utilizamos la librería fdth, con la función fdt. La instrucción range nos devuelve el valor mínimo y máximo del vector “calificaciones”

range(calificaciones) # Funcion "range" valor mínimo y máximo del vector calificaciones
## [1]  5 10
tabladeFrec <-fdt(calificaciones, breaks = "Sturges", 
                  start = 5, end = 11, h = 1) # Con parámetros de start, end y h que es el ancho de la clase del intervalo
tabladeFrec  # Desplegamos el resultado
##  Class limits f  rf rf(%) cf cf(%)
##         [5,6) 1 0.1    10  1    10
##         [6,7) 1 0.1    10  2    20
##         [7,8) 2 0.2    20  4    40
##         [8,9) 3 0.3    30  7    70
##        [9,10) 2 0.2    20  9    90
##       [10,11) 1 0.1    10 10   100
tabladeFrec1 <-fdt(calificaciones, breaks = "Scott", 
                  k = 5) # Usamos el metodo Scott y como parametro K que es el número de clases del intervalo
tabladeFrec1  # Desplegamos el resultado
##  Class limits f  rf rf(%) cf cf(%)
##   [4.95,5.98) 1 0.1    10  1    10
##   [5.98,7.01) 3 0.3    30  4    40
##   [7.01,8.04) 3 0.3    30  7    70
##   [8.04,9.07) 2 0.2    20  9    90
##   [9.07,10.1) 1 0.1    10 10   100
#Donde: 
#f= frecuencia absoluta
#rf= frecuencia relativa
#rf(%) frecuencia relativa porcentual
#cf= frecuencia acumulada
#cf(%)=frecuencia acumulada porcentual

En las opciones de la función fdt, los parametros “start” y “end” definen el inicio con el valor mínimo y máximo para la distribución de los datos

Ejercicio:

a).- Modifique el parametro “start” igual a 0.

b).- Remueva los parametros “start” y “end”

c).- Utiliza el parametro h=2

d).- Modifica el parametro K = 3 en tabladeFrec1

Gráficas para representar los datos

Un Histograma es un gráfico de distribuciones de frecuencias de un grupo de datos estadísticos, para poder observar la distrubución de los datos en una gráfica de barras

La función “density” la usamos para observar la distribución de datos en una campana de Gauss

hist(calificaciones)

d <- density(calificaciones)
plot(d)
Skewness

Para calcular “skewness” usamos la libreria “moments”. El “skewness” nos indica la asimetría de una gráfica de campana de Gauss; que tan simetrica es la distribución de datos. Los valores van de -1 a 1, un valor mas cercano a cero siginifica que la distribución es simetrica

skewness(calificaciones)  
## [1] -0.3031933

El resultado de -0.3031933 nos indica que la distribución esta sesgada a la derecha, lo cuál lo podemos constatar en la gráfica de density

Kurstosis

Para calcular “Kurtosis” usamos la libreria “moments”. La curtosis es una medida estadística que determina el grado de concentración que presentan los valores de una variable alrededor de la zona central de la distribución de frecuencias. También es conocida como medida de apuntamiento.

kurtosis(calificaciones)  
## [1] 2.368679

Medidas de Dispersión

La varianza es una medida de dispersión que representa la variabilidad de una serie de datos respecto a su media. Mientras que la la desviación estándar es la raíz cuadrada del promedio de las distancias al cuadrado que van desde las observaciones a la media.

var(calificaciones)  # Calcular la varianza del vector calificaciones  
## [1] 2.233333
sd(calificaciones) # Calcular la desviación estándar del vector calificaciones
## [1] 1.494434
DevStd <-  sqrt(var(calificaciones)) # Asignar el valor de la varianza a la variable DevStd
print(paste("El valor de la desviación estándar es : ", DevStd))
## [1] "El valor de la desviación estándar es :  1.49443411809733"

Estadisticos de Posición

Utilizemos la función describe de la librería psych para obtener un resumen del vector calificaciones

describe(calificaciones)    
##    vars  n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 10  7.7 1.49      8    7.75 1.48   5  10     5 -0.26    -1.08 0.47

Boxplot

Una gráfica que nos ayuda a observar como estan distribuidos los datos es la gráfica boxplot

boxplot(calificaciones, horizontal = T)  

Observamos que el valor mínimo es 5 y el máximo es 10, la linea negra que divide la gráfica es la mediana en este caso es 8


De Posición

Quatiles y Percentiles

Los quaintiles y los percentiles nos ayudan a ver la concentración de datos, dependiendo de los paramentros de la función

max(calificaciones) - min(calificaciones) # Para obtener el valor entre el valor máximo y mínimo del vector
## [1] 5
range(calificaciones) # Obtener el rango
## [1]  5 10
quantile(calificaciones) # Obtener como estan posicionados los datos
##    0%   25%   50%   75%  100% 
##  5.00  7.00  8.00  8.75 10.00
quantile(calificaciones, c(.25, .50, .1)) # Encontrar el 25th, 50th, 75th en percentiles
## 25% 50% 10% 
## 7.0 8.0 5.9
quantile(calificaciones, c(.1,.25,.5,.75,.90) ) #find the 10th, 25th, 50th, 75th and 90th percentiles
##  10%  25%  50%  75%  90% 
## 5.90 7.00 8.00 8.75 9.10

Observamos que al ir cambiando los parametros dentro del contenedor c nos va mostrando diferentes valores.

Los Cuantiles (cuartiles, deciles, percentiles) son medidas de localización, su función es informar del valor de la variable que ocupará la posición (en tanto por cien) que nos interese respecto de todo el conjunto de variables


Ahora uniremos las 3 gráficas para observar mas detalle de la distribución y posición del datos del vector calificaciones

usamos par(mfrow=c(1,3)) para dividir en 3 paneles o columnas, con una fila

par(mfrow=c(1,3))
hist(calificaciones)
boxplot(calificaciones, horizontal = T) 
plot(d)

Vamos a Modificar los datos del vector “calificaciones” para elaborar varios ejemplos

# 10 calificaciones con valores enteros
calificacionesizq = c(6, 6, 6, 6, 7, 7, 8, 8, 9, 10) # Datos cargados hacia la izquierda

Gráficas

par(mfrow=c(1,3))
hist(calificacionesizq)
boxplot(calificacionesizq, horizontal = T) 
d1 <- density(calificacionesizq)
plot(d1)

describe(calificacionesizq)
##    vars  n mean   sd median trimmed  mad min max range skew kurtosis   se
## X1    1 10  7.3 1.42      7    7.12 1.48   6  10     4 0.58    -1.18 0.45
# 10 calificaciones con valores enteros
calificacionesder = c(5, 6, 7, 8, 9, 9, 10, 10,10,10) # Datos cargados hacia la derecha

Gráficas

par(mfrow=c(1,3))
hist(calificacionesder)
boxplot(calificacionesder, horizontal = T) 
d2 <- density(calificacionesder)
plot(d2)

describe(calificacionesder)
##    vars  n mean   sd median trimmed  mad min max range  skew kurtosis   se
## X1    1 10  8.4 1.84      9    8.62 1.48   5  10     5 -0.63    -1.27 0.58
par(mfrow=c(3,3))
hist(calificaciones)
boxplot(calificaciones, horizontal = T) 
plot(d)

hist(calificacionesizq)
boxplot(calificacionesizq, horizontal = T) 
d1 <- density(calificacionesizq)
plot(d1)

hist(calificacionesder)
boxplot(calificacionesder, horizontal = T) 
d2 <- density(calificacionesder)
plot(d2)

par(mfrow=c(1,1)) # Regresando al default 1 renglón, 1 columna
par(mfrow=c(3,3))
hist(calificaciones)
hist(calificacionesizq)
hist(calificacionesder)

boxplot(calificaciones, horizontal = T) 
boxplot(calificacionesizq, horizontal = T) 
boxplot(calificacionesder, horizontal = T) 

plot(d)
plot(d1)
plot(d2)

par(mfrow=c(1,1)) # Regresando al default 1 renglón, 1 columna

Modificando las gráficas, mejorando la visualización

boxplot(calificaciones,
    horizontal = T,  # Horizontal
    notch  = T,      # Confidence interval for median
    main   = "Boxplot de Calificaciones",
    sub    = "(Fuente: Escuela Ricalliyi)",
    xlab   = "Calificaciones",
    col    = "#CD0000"  # red3
  ) 

Histograma con mas detalles

barplot(calificaciones, main = "Calificaciones",
        xlab = "Calificaciones", ylab = "Calificación",
        col = rainbow(5))

plot(calificaciones) # Un simple plot sobre el vector calificaciones

fig <-plot_ly(x = calificaciones, type = "box") # Que pasa si cambias la instrucción a y = calificaciones
fig

Gráfica, barplot horizontal

  barplot(calificaciones, 
    main   = "Calificaciones del Grupo de Ciencias Ocultas",
    sub    = "(Fuente: Escuela Ricalliyi::Calificaciones)",
    horiz  = T,  # Barras Horizontales
    ylab   = "Calificación",  # eje y calificaciones
    xlab   = "Frecuencias",
    xlim   = c(0, 10),  # Limites para eje x
    border = NA,  # sin marcos
    col    = "#CD0000"  # red3
  )

boxplot(calificaciones, horizontal = T)
stripchart(calificaciones, method = "jitter", pch = 19, add = TRUE, col = "blue")


This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

Referencias:

https://digitaschools.com/descriptive-statistics-skewness-and-kurtosis/

http://www.mat.uda.cl/hsalinas/cursos/2011/2do/clase2.pdf

https://r-coder.com/grafico-barras-r/

https://www.rdocumentation.org/

K cpepi

Version 1.0, Nov 6, 2021

P1