#UNIVERSIDAD CENTRAL DEL ECUADOR
#FACULTAD: FIGEMPA
#CARRERA: INGENIERIA AMBIENTAL
#AUTOR: KEVIN CHICAIZA
#TEMA DISCRETA
#VARIABLE: POBLACION POR REGIONES DE CHILE

##IMPORTAR DATOS##
library(readxl)
cantpo <- read_excel("C:/Estadistica/DatosTerritorialesPoblacion.xls")
View(cantpo)

##EXTRAER DATOS##
poblaciones<-cantpo$Poblacion

#CREAR TABLA DE DISTRIBUCION DE FRECUENCIAS (MANUAL)#
min <- min(poblaciones)
max <- max(poblaciones)
R <- max-min
k <- floor(1+3.33*log10(length(poblaciones)))
k
## [1] 5
A <- R/k
lim_inf <- seq(from=min,to=max-A,by=A)
lim_sup <- seq(from=min+A,to=max,by=A)
MC <- (lim_inf+lim_sup)/2

ni <- c()
for (i in 1:k) {
  if(i<=5)
    ni[i] <- length(subset(poblaciones,poblaciones>=lim_inf[i] & poblaciones<=lim_sup[i]))
  else
    ni[i] <- length(subset(poblaciones,poblaciones>=lim_inf[i] & poblaciones<lim_sup[i]))
}
sum(ni)
## [1] 16
hi <- ni/sum(ni)*100
sum(hi)
## [1] 100
Ni_asc <- cumsum(ni)
Hi_asc <- cumsum(hi)
Ni_desc <- rev(cumsum(rev(ni)))
Hi_desc <- rev(cumsum(rev(hi)))

TDFpoblacion <- data.frame(round(lim_inf,2),
                               round(lim_sup,2),
                               MC,ni,
                               round(hi,2),
                               Ni_asc,
                               Ni_desc,
                               round(Hi_asc,2),
                               round(Hi_desc,2))

colnames(TDFpoblacion) <- c("Lim inf","Lim sup","MC","ni","hi(%)",
                                "Ni asc","Ni desc","Hi asc(%)","Hi desc(%)")
TDFpoblacion
##   Lim inf Lim sup        MC ni hi(%) Ni asc Ni desc Hi asc(%) Hi desc(%)
## 1  108306 1760203  934254.4 14 87.50     14      16     87.50     100.00
## 2 1760203 3412100 2586151.2  1  6.25     15       2     93.75      12.50
## 3 3412100 5063996 4238048.0  0  0.00     15       1     93.75       6.25
## 4 5063996 6715893 5889944.8  0  0.00     15       1     93.75       6.25
## 5 6715893 8367790 7541841.6  1  6.25     16       1    100.00       6.25
#CREAR FILA DE TOTALES#
totales <- c( lim_inf= "TOTAL",
              lim_sup= "-",
              MC= "-",
              ni= sum(ni),
              hi= sum(hi),
              Ni_asc= "-",
              Ni_des= "-",
              Hi_asc= "-",
              Hi_des= "-")

TDFpoblacion <- rbind(TDFpoblacion,totales)
TDFpoblacion
##     Lim inf   Lim sup        MC ni hi(%) Ni asc Ni desc Hi asc(%) Hi desc(%)
## 1    108306 1760202.8  934254.4 14  87.5     14      16      87.5        100
## 2 1760202.8 3412099.6 2586151.2  1  6.25     15       2     93.75       12.5
## 3 3412099.6 5063996.4   4238048  0     0     15       1     93.75       6.25
## 4 5063996.4 6715893.2 5889944.8  0     0     15       1     93.75       6.25
## 5 6715893.2   8367790 7541841.6  1  6.25     16       1       100       6.25
## 6     TOTAL         -         - 16   100      -       -         -          -
#SIMPLIFICACION CON HISTOGRAMA#
Hist_poblaciones <- hist(poblaciones,breaks = 5,plot = F)
k <- length(Hist_poblaciones$breaks)
Li <- Hist_poblaciones$breaks[1:(length(Hist_poblaciones$breaks) - 1)]
Ls <- Hist_poblaciones$breaks[2:length(Hist_poblaciones$breaks)]
ni <- Hist_poblaciones$counts
sum(ni)
## [1] 16
MC <- Hist_poblaciones$mids
hi <- (ni/sum(ni))
sum(hi)
## [1] 1
Ni_asc <- cumsum(ni)
Hi_asc <- cumsum(hi)
Ni_desc <- rev(cumsum(rev(ni)))
Hi_desc <- rev(cumsum(rev(hi)))
TDFpoblacion <- data.frame(Li = round(Li, 2),
                               Ls = round(Ls, 2),
                               MC = round(MC, 2),
                               ni = ni,
                               hi = round(hi * 100, 2),
                               Ni_asc = Ni_asc,
                               Ni_desc = Ni_desc,
                               Hi_asc = round(Hi_asc * 100, 2),
                               Hi_desc = round(Hi_desc * 100, 2))

colnames(TDFpoblacion) <- c("Lim inf","Lim sup","MC","ni","hi(%)",
                                "Ni asc","Ni desc","Hi asc(%)","Hi desc(%)")
#CREAR FILA DE TOTALES#
totales <- c( lim_inf= "TOTAL",
              lim_sup= "-",
              MC= "-",
              ni= sum(ni),
              hi= sum(hi*100),
              Ni_asc= "-",
              Ni_des= "-",
              Hi_asc= "-",
              Hi_des= "-")

TDFpoblaciontotal <- rbind(TDFpoblacion,totales)
TDFpoblaciontotal
##   Lim inf Lim sup    MC ni hi(%) Ni asc Ni desc Hi asc(%) Hi desc(%)
## 1       0   2e+06 1e+06 14  87.5     14      16      87.5        100
## 2   2e+06   4e+06 3e+06  1  6.25     15       2     93.75       12.5
## 3   4e+06   6e+06 5e+06  0     0     15       1     93.75       6.25
## 4   6e+06   8e+06 7e+06  0     0     15       1     93.75       6.25
## 5   8e+06   1e+07 9e+06  1  6.25     16       1       100       6.25
## 6   TOTAL       -     - 16   100      -       -         -          -
#HISTOGRAMA POR REGLA DE STURGES#
hist(poblaciones, breaks = 5,
     main = "Gráfica N°16: Distribución de personas en Chile",
     xlab = "Cantidad de personas",
     ylab = "Frecuencia",
     ylim = c(0, max(ni)),
     col = "violet",
     cex.main = 0.9,
     cex.lab = 1,
     cex.axis = 0.9,
     xaxt = "n")
axis(1, at = Hist_poblaciones$breaks,
     labels = Hist_poblaciones$breaks, las = 1,
     cex.axis = 0.9)

#HISTOGRAMA GLOBAL#
hist(poblaciones,
     main = "Gráfica N°17: Distribución de personas en Chile (Global)",
     xlab = "Cantidad de personas",
     ylab = "Frecuencia",
     ylim = c(0, length(poblaciones)),
     col = "gray",
     cex.main = 0.9,
     cex.lab = 1,
     cex.axis = 0.9,
     xaxt = "n")
axis(1, at = Hist_poblaciones$breaks,
     labels = Hist_poblaciones$breaks, las = 1,
     cex.axis = 0.9)

barplot(TDFpoblacion$hi,
        space=0,
        col = "green",
        main = "Gráfica N°18: Distribución porcentual de personas en Chile",
        cex.main = 0.9,
        xlab = "Cantidad de personas",
        ylab = "Porcentaje (%)",
        ylim = c(0,100),
        names.arg= TDFpoblacion$MC)

#HISTOGRAMA LOCAL#
hist(poblaciones,
     main = "Gráfica N°19: Distribución de personas en chile (Local)",
     xlab = "Cantidad de personas",
     ylab = "Frecuencia",
     ylim = c(0,max(ni)),
     col = "red",
     cex.main = 0.9,
     cex.lab = 1,
     cex.axis = 0.9,
     xaxt = "n")
axis(1, at = Hist_poblaciones$breaks,
     labels = Hist_poblaciones$breaks, las = 1,
     cex.axis = 0.9)

barplot(TDFpoblacion$hi,space=0,
        col = "blue",
        main ="Gráfica N°20: Distribución porcentual de personas en Chile ",
        xlab="Cantidad de personas",
        ylab="Porcentaje (%)",
    
        cex.main = 0.9,
        names.arg = TDFpoblacion$MC)

#OJIVAS ASC Y DESC (ABSOLUTAS)#
 
plot(Li, Ni_desc,
     main = "Gráfica N°21: Ojivas de Frecuencia Absoluta",
     xlab = "Poblacion",
     ylab = "Frecuencia acumulada",
     xlim = range(Li),
     ylim = c(0, max(Ni_asc)),
     col = "red",
     type = "p",
     lwd = 2,
     xaxt = "n")

lines(c(min(Li), Ls), c(0, Ni_asc),
      col = "blue",
      type = "p",
      lwd = 2)

axis(1, at = round(seq(min(Li), max(Ls), length.out = 6), 2))
legend("topright", legend = c("Descendente", "Ascendente"),
       col = c("red", "blue"), pch = 1)

#OJIVAS ASC Y DESC (RELATIVAS)#

plot(Li, Hi_desc * 100,
     main = "Gráfica N°22: Ojivas de Frecuencia Relativa",
     xlab = "Poblacion",
     ylab = "Porcentaje acumulado",
     xlim = range(Li),
     ylim = c(0, 100),
     col = "red",
     type = "p",
     xaxt = "n")

lines(c(min(Li), Ls), c(0, Hi_asc * 100),
       col = "blue",
       type = "p")

axis(1, at = round(seq(min(Li), max(Ls), length.out = 6), 2))
legend("bottomright", legend = c("Descendente", "Ascendente"),
       col = c("red", "blue"), pch = 1)

#DIAGRAMA DE CAJA#

boxplot(poblaciones,
        horizontal = TRUE,
        main = "Gráfica N°23: Diagrama de caja de personas en Chile",
        xlab = " Cantidad de personas",
        cex.main = 0.9,
        col = "skyblue",
        outline = TRUE,
        pch = 1)

#INDICADORES ESTADISTICOS#

###################DE TENDENCIA CENTRAL################

#MEDIA ARITMETICA#
media <- round(mean(poblaciones), 2)
media
## [1] 1247556
#MEDIANA#
mediana <- median(poblaciones)
mediana
## [1] 791622.5
#################INDICADORES DE DISPERSIÓN###############

#VARIANZA#
varianza <- var(poblaciones)
varianza
## [1] 3.889075e+12
#DESVIACION ESTANDAR#
sd <- sd(poblaciones)
sd
## [1] 1972074
#COEFICIENTE DE VARIACION#
cv <- round((sd / media) * 100, 2)
cv
## [1] 158.08
###################INDICADORES DE FORMA##################

#ASIMETRIA#
library(e1071)
asimetria <- skewness(poblaciones)
asimetria
## [1] 2.894641
#CURTOSIS#
curtosis <- kurtosis(poblaciones)
curtosis
## [1] 7.647613
#CREACION DE TABLA DE INDICADORES (CONCLUSIONES)#
tabla_indicadores <- data.frame("Variable" =c("Poblacion de chile"),
                                "Rango" = c("[108306 ;2010849]"),
                                "X" = c(media),
                                "Me" = c(round(mediana,2)),
                                "Mo" = "[0,2000000]",
                                "V" = c(round(varianza,2)),
                                "Sd" = c(round(sd,2)),
                                "Cv" = c(cv),
                                "As" = c(round(asimetria,4)),
                                "K" = c(round(curtosis,2)),
                                "Valores Atipicos" = "[8000000;10000000]")
library(knitr)
kable(tabla_indicadores, align = 'c', caption = "Tabla indicadores de cantidad de personas en cada region de chile")
Tabla indicadores de cantidad de personas en cada region de chile
Variable Rango X Me Mo V Sd Cv As K Valores.Atipicos
Poblacion de chile [108306 ;2010849] 1247556 791622.5 [0,2000000] 3.889075e+12 1972074 158.08 2.8946 7.65 [8000000;10000000]