Introducción

En este reporte de Rmarkdown, se verán funciones básicas para la lectura de datos, la creación de tablas de frecuencias, la creación de figuras en el programa R, así como la estimación de estadísticas básicas e incluso, unos procesos de simulación de variables aleatorias provenientes de diferentes distribuciones de probabilidad y sus respectivos gráficos de funciones de probabilidad, que permite describir su comportamiento.

Lectura de datos

El primer paso para los análisis descriptivos en R es realizar una lectura de una base de datos. La lectura puede realizarse con base en la función read.csv o la opción Import Dataset que está al lado derecho de Rstudio, en la ventana Enviroment.

datostabla=read.csv('pobreza2018.csv',head=T,sep=';',dec=',')
attach(datostabla)
View(datostabla)

Creación de tabla de frecuencias

Crea una tabla de frecuencias partiendo de la cantidad de clases k, la cual puede hallarse con la ley de sturges.

Para el ejemplo, k=1+3.33*log(33,10), se aproxima a 6.

x=Pobreza2018
n=length(x)
k=1+3.33*log(33,10)
min(x)
## [1] 4.1
max(x)
## [1] 68.5
rango=max(x)-min(x)
k2=round(k)
amplitud=rango/k2


# Corte de 6 intervalos#

Tabla1=table(cut(x,6))
sum(Tabla1)
## [1] 33
## Proporciones ##
frecrelat=prop.table(Tabla1)

## Frecuencias acumuladas #
frecabsacum=cumsum(Tabla1)
frecrelacum=cumsum(frecrelat)

Se crea así la tabla de frecuencias en R, para la variable de pobreza multidimensional del año 2018.

En esta se aprecia que la tercera clase es la que posee mayor cantidad de departamentos, en este caso, el 30.3% de los departamentos, tienen una pobreza multidimensional entre 25.6% y 36.3%, lo cual muestra un alto porcentaje de cada departamento. Además de ello, en el año 2018, puede verse que más del 50% de los departamentos presentan porcentajes de población en pobreza mayores de 25.6%.

tablafrecuencias=cbind(Tabla1,round(frecrelat*100,2),frecabsacum,round(frecrelacum*100,2))
colnames(tablafrecuencias)=c("ni","fi","Ni","Fi")
tablafrecuencias
##             ni    fi Ni     Fi
## (4.04,14.8]  8 24.24  8  24.24
## (14.8,25.6]  8 24.24 16  48.48
## (25.6,36.3] 10 30.30 26  78.79
## (36.3,47]    3  9.09 29  87.88
## (47,57.8]    1  3.03 30  90.91
## (57.8,68.6]  3  9.09 33 100.00

Histograma de frecuencias

Esta figura representa las frecuencias absolutas en forma de barras, por cada uno de los intervalos o rangos de la variable cuantitativa X. El argumento breaks, cambia la cantidad de intervalos que se presentan en el histograma.

hist(x,breaks=6, main='Histograma de frecuencias con 6 rangos')

Diagrama de cajas y bigotes

El diagrama de cajas y bigotes sólo muestra una caja y algunos datos atípicos a la derecha de esta caja, los cuales son los departamentos cuyo porcentaje de pobreza multidimensional es mayor de 50% de la población, aproximadamente.

boxplot(x,horizontal=TRUE)

Este diagrama muestra de otra manera la distribución de frecuencias para la variable X, donde se ve la mediana en una posición izquierda, que representa una leve asimetría a la izquierda.

Estadísticas básicas

La función basicStats del paquete fBasics permite estimar todas las estadísticas básicas importantes para el análisis de una variable cuantitativa.

basicStats(x)
##                      x
## nobs         33.000000
## NAs           0.000000
## Minimum       4.100000
## Maximum      68.500000
## 1. Quartile  15.300000
## 3. Quartile  34.400000
## Mean         27.912121
## Median       26.900000
## Sum         921.100000
## SE Mean       2.826420
## LCL Mean     22.154892
## UCL Mean     33.669351
## Variance    263.625473
## Stdev        16.236547
## Skewness      0.878025
## Kurtosis      0.014736

Simulación de variables aleatorias

Para realizar una representación de unas variables que se comportan según funciones de probabilidad determinadas (leer capítulo de Distribuciones de probabilidad), se pueden emplear funciones de simulación en R, algunas de ellas inician con r, seguido del nombre o inicial de la función de probabilidad de la cual se simulará.

El siguiente ejemplo varía parámetros de la función de probabilidad binomial y realiza histogramas de frecuencuas para cada caso.

X=rbinom(2000,10,0.2)
X2=rbinom(2000,20,0.2)
X3=rbinom(2000,30,0.2)
X4=rbinom(2000,40,0.2)

# Configurar área gráfica
par(mfrow = c(2, 2), mar = c(4, 4, 2, 1))

hist(X, main='Binomial, n=10, p=0.2', xlab='Tamaño de muestra',col='blue')
hist(X2,main='Binomial, n=20, p=0.2', col='blue')
hist(X3,main='Binomial, n=30, p=0.2', col='blue')
hist(X4,main='Binomial, n=40, p=0.2', col='blue')

El siguiente caso simula variable aleatoria con distribución de probabilidad Poisson y realiza histogramas de frecuencias de cada caso, para diferentes valores de lambda.

par(mfrow = c(2, 2), mar = c(4, 4, 2, 1))
lambdas=c(10,50,100,180)
unos=1
for(i in 1:4){
y=rpois(200,lambdas[i])  
 hist(y,lambdas[i],col='lightblue',main=' ')
 legend('topright',15, c('lambda:',lambdas[i]))
 estadisticas=basicStats(y)
 tablas=cbind(unos,estadisticas)
 unos=tablas
  }

colnames(tablas)=c('1',lambdas[1],lambdas[2],lambdas[3],lambdas[4])
tablas
##             1          10          50          100          180
## nobs        1  200.000000  200.000000   200.000000   200.000000
## NAs         1    0.000000    0.000000     0.000000     0.000000
## Minimum     1    2.000000   33.000000    76.000000   148.000000
## Maximum     1   22.000000   71.000000   128.000000   216.000000
## 1. Quartile 1    7.000000   45.000000    93.750000   169.000000
## 3. Quartile 1   12.000000   56.000000   107.000000   189.000000
## Mean        1    9.760000   49.840000   100.420000   179.585000
## Median      1   10.000000   50.000000   100.000000   180.000000
## Sum         1 1952.000000 9968.000000 20084.000000 35917.000000
## SE Mean     1    0.228524    0.536433     0.708823     0.966532
## LCL Mean    1    9.309361   48.782177    99.022232   177.679040
## UCL Mean    1   10.210639   50.897823   101.817768   181.490960
## Variance    1   10.444623   57.552161   100.486030   186.836960
## Stdev       1    3.231814    7.586314    10.024272    13.668832
## Skewness    1    0.398943    0.038206     0.180995     0.054876
## Kurtosis    1    0.426916   -0.422167    -0.325169    -0.384926
#Simulación de variable con distribución exponencial

par(mfrow = c(2, 2), mar = c(4, 4, 2, 1))

lambdas=c(10,20,50,100)
unos=1
for(i in 1:4){
xx=rexp(500,rate=1/lambdas[i])  
  hist(xx,col='darkblue',main=' ')
legend('topright',30,round(1/lambdas[i],2))  
estadisticp=basicStats(xx)
tabla2=cbind(unos,estadisticp)
unos=tabla2
}

colnames(tabla2)=c('unos',1/lambdas[1],1/lambdas[2],1/lambdas[3],1/lambdas[4])
tabla2
##             unos         0.1        0.05         0.02         0.01
## nobs           1  500.000000  500.000000   500.000000   500.000000
## NAs            1    0.000000    0.000000     0.000000     0.000000
## Minimum        1    0.001354    0.014765     0.110030     0.753905
## Maximum        1   77.029071  131.730722   278.218085   584.187888
## 1. Quartile    1    2.973310    5.063818    15.375138    30.421646
## 3. Quartile    1   14.157176   27.594311    74.975015   144.273393
## Mean           1   10.073282   19.553625    52.033561   103.858176
## Median         1    6.885489   13.882249    39.666405    74.925519
## Sum            1 5036.640791 9776.812568 26016.780386 51929.087897
## SE Mean        1    0.453654    0.864082     2.179159     4.569444
## LCL Mean       1    9.181975   17.855939    47.752103    94.880455
## UCL Mean       1   10.964589   21.251312    56.315019   112.835896
## Variance       1  102.900906  373.318529  2374.367102 10439.908435
## Stdev          1   10.144008   19.321453    48.727478   102.175870
## Skewness       1    2.172538    1.759736     1.581324     1.748879
## Kurtosis       1    7.056348    4.101779     2.915682     3.735924
#Diagramas de cajas y bigotes, mas histograma
par(mfrow=c(1,2))
Y=rexp(100,0.1)
boxplot(Y,horizontal=TRUE,col='lightblue')
hist(Y,main='Histograma: v.a exponencial',col='lightblue')

X1=rbinom(2000,60,0.2)
X2=c(rpois(200,50),rpois(10,20))
X3=rexp(500,rate=1/20)  


par(mfrow=c(1,3))

plot(density(X1),main='Simetría',xlab='Variable Binomial')
abline(v=quantile(X1,0.25),col='red')
abline(v=quantile(X1,0.5),col='red')
abline(v=mean(X1),col='blue')
abline(v=quantile(X1,0.75),col='red')

plot(density(X2),main='Asimetría a izquierda',xlab='Variable Poisson')
abline(v=quantile(X2,0.25),col='red')
abline(v=quantile(X2,0.5),col='red')
abline(v=mean(X2),col='blue')
abline(v=quantile(X2,0.75),col='red')


plot(density(X3),main='Asimetría a derecha',xlab='Variable Exponencial')
abline(v=quantile(X3,0.25),col='red')
abline(v=quantile(X3,0.5),col='red')
abline(v=mean(X3),col='blue')
abline(v=quantile(X3,0.75),col='red')

boxplot(X1,horizontal=TRUE)
boxplot(X2,horizontal=TRUE)
boxplot(X3,horizontal=TRUE)