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.
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)
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
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')
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.
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
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)