R INTERMEDIO

Esmeralda Acuña Neyra

2020-09-27

PARA OBSERVAR EN R PUBS:

https://rpubs.com/EsmeraldaAN/667112

PREGUNTA 1

  • US Airways tiene cinco vuelos diarios de Pittsburgh al Aeropuerto Regional de Bradford,Pennsylvania. Suponga que la probabilidad de que cualquier vuelo llegue tarde sea de 0.20.
V<- 5
PT<-0.20
  • ¿Cuál es la probabilidad de que ninguno de los vuelos llegue tarde hoy?
1-dbinom(0,V,PT)
## [1] 0.67232

0.67 es la probabilidad de que ninguno de los vuelos llegue tarde hoy

  • ¿Cuál es la probabilidad de que exactamente uno de los vuelos llegue tarde hoy
dbinom(1,V,PT)
## [1] 0.4096

0.4096 es la probabilidad de que exactamente uno de los vuelos llegue tarde hoy

  • Coastal Insurance Company asegura propiedades frente a la playa a lo largo de Virginia, Carolina del Norte y del Sur, y las costas de Georgia; el cálculo aproximado es que, cualquier año, la probabilidad de que un huracán de categoría III (vientos sostenidos de más de 110 millas por hora) o más intenso azote una región de la costa (la isla de St. Simons, Georgia, por ejemplo) es de 0.05. Si un dueño de casa obtiene un crédito hipotecario de 30 años por una propiedad recién comprada en St. Simons,

  • ¿cuáles son las posibilidades de que experimente por lo menos un huracán durante el periodo del crédito?

lambda<- 30*0.05

1-dpois(0,lambda)
## [1] 0.7768698

0.7787 es la prob. de que un huracán de ese tipo azote la propiedad frente a la playa en St. Simons, durante el periodo de 30 años, mientras el crédito se encuentra vigente

PREGUNTA 2

  • Importar la data bankloan.sav
getwd()
## [1] "C:/Users/Esmeralda/Documents/R/curso r/intermedio/data"
setwd("C://Users//Esmeralda//Documents//R//curso r//intermedio//data")
library(foreign)
bankloan = read.spss("bankloan.sav", to.data.frame = T)
  • Se tiene la información de clientes de una entidad financiera, y se requiere resumir la información para las variables: edad, dirección, ingresos, deudacred, deudaotro.

  • Aplicar el análisis de componentes principales, desarrollar el grafico biplot, ¿se observan grupos de variables correlacionadas?

head(bankloan)# los primeros datos
##   edad                        educ empleo direccion ingresos deudaingr
## 1   41        Superiores iniciados     17        12      176       9.3
## 2   27 No completó el bachillerato     10         6       31      17.3
## 3   40 No completó el bachillerato     15        14       55       5.5
## 4   41 No completó el bachillerato     15        14      120       2.9
## 5   24         Título de Bachiller      2         0       28      17.3
## 6   41         Título de Bachiller      5         5       25      10.2
##   deudacred deudaotro impago
## 1 11.359392  5.008608     Sí
## 2  1.362202  4.000798     No
## 3  0.856075  2.168925     No
## 4  2.658720  0.821280     No
## 5  1.787436  3.056564     Sí
## 6  0.392700  2.157300     No
tail(bankloan) # los ultimos datos
##     edad                        educ empleo direccion ingresos deudaingr
## 845   23 No completó el bachillerato      3         4       13       3.1
## 846   34 No completó el bachillerato     12        15       32       2.7
## 847   32         Título de Bachiller     12        11      116       5.7
## 848   48 No completó el bachillerato     13        11       38      10.8
## 849   35         Título de Bachiller      1        11       24       7.8
## 850   37 No completó el bachillerato     20        13       41      12.9
##     deudacred deudaotro impago
## 845  0.045539  0.357461   <NA>
## 846  0.239328  0.624672   <NA>
## 847  4.026708  2.585292   <NA>
## 848  0.722304  3.381696   <NA>
## 849  0.417456  1.454544   <NA>
## 850  0.899130  4.389870   <NA>
summary(bankloan)
##       edad                                educ         empleo      
##  Min.   :20.00   No completó el bachillerato:460   Min.   : 0.000  
##  1st Qu.:29.00   Título de Bachiller        :235   1st Qu.: 3.000  
##  Median :34.00   Superiores iniciados       :101   Median : 7.000  
##  Mean   :35.03   Título Superior            : 49   Mean   : 8.566  
##  3rd Qu.:41.00   Título de Post-grado       :  5   3rd Qu.:13.000  
##  Max.   :56.00                                     Max.   :33.000  
##    direccion         ingresos        deudaingr       deudacred      
##  Min.   : 0.000   Min.   : 13.00   Min.   : 0.10   Min.   : 0.0117  
##  1st Qu.: 3.000   1st Qu.: 24.00   1st Qu.: 5.10   1st Qu.: 0.3822  
##  Median : 7.000   Median : 35.00   Median : 8.70   Median : 0.8851  
##  Mean   : 8.372   Mean   : 46.68   Mean   :10.17   Mean   : 1.5768  
##  3rd Qu.:12.000   3rd Qu.: 55.75   3rd Qu.:13.80   3rd Qu.: 1.8984  
##  Max.   :34.000   Max.   :446.00   Max.   :41.30   Max.   :20.5613  
##    deudaotro         impago   
##  Min.   : 0.04558   No  :517  
##  1st Qu.: 1.04594   Sí  :183  
##  Median : 2.00324   NA's:150  
##  Mean   : 3.07879             
##  3rd Qu.: 3.90300             
##  Max.   :35.19750

con “str” podemos tener los tipos de variables del data frame

str(bankloan)
## 'data.frame':    850 obs. of  9 variables:
##  $ edad     : num  41 27 40 41 24 41 39 43 24 36 ...
##  $ educ     : Factor w/ 5 levels "No completó el bachillerato",..: 3 1 1 1 2 2 1 1 1 1 ...
##  $ empleo   : num  17 10 15 15 2 5 20 12 3 0 ...
##  $ direccion: num  12 6 14 14 0 5 9 11 4 13 ...
##  $ ingresos : num  176 31 55 120 28 25 67 38 19 25 ...
##  $ deudaingr: num  9.3 17.3 5.5 2.9 17.3 10.2 30.6 3.6 24.4 19.7 ...
##  $ deudacred: num  11.359 1.362 0.856 2.659 1.787 ...
##  $ deudaotro: num  5.009 4.001 2.169 0.821 3.057 ...
##  $ impago   : Factor w/ 2 levels "No","Sí": 2 1 1 1 2 1 1 1 2 1 ...
##  - attr(*, "variable.labels")= Named chr [1:9] "Edad en años" "Nivel de educación" "Años con la empresa actual" "Años en la dirección actual" ...
##   ..- attr(*, "names")= chr [1:9] "edad" "educ" "empleo" "direccion" ...
##  - attr(*, "codepage")= int 65001
#Seleccion de data:

library(dplyr)

bankloan1=data.frame(cbind(bankloan$edad,bankloan$direccion,bankloan$ingresos,bankloan$deudacred,bankloan$deudaotro))

class(bankloan1)
## [1] "data.frame"
names(bankloan1)
## [1] "X1" "X2" "X3" "X4" "X5"
bankloan1=rename(bankloan1,edad=X1,direccion=X2,ingresos=X3,deudacred=X4,deudaotro=X5)

class(bankloan1)
## [1] "data.frame"

Prueba de Correlacion

library(corrplot)
corrplot(cor(bankloan1))

# nos muestran dos grupos: 
#edad,direccion
#ingresos/deudacred/deudaotro

#install.packages("PerformanceAnalytics")
library(PerformanceAnalytics)

chart.Correlation(bankloan1,histogram = F ,pch = 19)

  • Analisis de Componentes principales
dim(bankloan1)
## [1] 850   5
#PCA se usa prcomp, 
bankloan_ACP = prcomp(bankloan1, scale=T,center=T)
bankloan_ACP
## Standard deviations (1, .., p=5):
## [1] 1.6391792 1.0837880 0.6636303 0.5955895 0.5859720
## 
## Rotation (n x k) = (5 x 5):
##                  PC1        PC2        PC3         PC4        PC5
## edad      -0.4360984  0.4878766 -0.2886804  0.66312172  0.2207438
## direccion -0.3437529  0.6540395  0.4759982 -0.43470852 -0.1962665
## ingresos  -0.5057982 -0.1337167 -0.6316506 -0.55519662  0.1380661
## deudacred -0.4537406 -0.4198689  0.5330994  0.05106014  0.5753499
## deudaotro -0.4795204 -0.3742175  0.0831377  0.24586105 -0.7501079
length(bankloan_ACP)# cuantos elementos hay?
## [1] 5
bankloan_ACP[1]
## $sdev
## [1] 1.6391792 1.0837880 0.6636303 0.5955895 0.5859720
bankloan_ACP[2]
## $rotation
##                  PC1        PC2        PC3         PC4        PC5
## edad      -0.4360984  0.4878766 -0.2886804  0.66312172  0.2207438
## direccion -0.3437529  0.6540395  0.4759982 -0.43470852 -0.1962665
## ingresos  -0.5057982 -0.1337167 -0.6316506 -0.55519662  0.1380661
## deudacred -0.4537406 -0.4198689  0.5330994  0.05106014  0.5753499
## deudaotro -0.4795204 -0.3742175  0.0831377  0.24586105 -0.7501079
bankloan_ACP[3]
## $center
##      edad direccion  ingresos deudacred deudaotro 
## 35.029412  8.371765 46.675294  1.576805  3.078789
bankloan_ACP[4]
## $scale
##      edad direccion  ingresos deudacred deudaotro 
##  8.041432  6.895016 38.543054  2.125840  3.398803
bankloan_ACP[5]
## $x
##                  PC1           PC2          PC3           PC4           PC5
##   [1,]  -4.562070646 -1.886874e+00  0.417135663 -1.2246991253  2.7455880138
##   [2,]   0.675120753 -7.168735e-01  0.350140463 -0.2252610159 -0.4706190044
##   [3,]  -0.377202677  1.049091e+00 -0.129315131 -0.1479940677  0.0118016432
##   [4,]  -1.479050309  6.766021e-01 -0.811359323 -1.0560167609  1.0573912556
##   [5,]   1.218770608 -1.437642e+00  0.176331431 -0.1092460149 -0.0694498968
##   [6,]   0.511494675  4.529283e-01 -0.411370174  0.9220568675  0.0651284761
##   [7,]  -2.912374111 -1.712033e+00  0.466159587  1.0322812800 -2.2243494379
##   [8,]   0.119174187  1.251535e+00 -0.370687310  0.4487013435  0.1269047702
##   [9,]   1.197848585 -9.665853e-01  0.497770599 -0.2261050717 -0.3804734394
##  [10,]  -0.123835310  4.384774e-01  0.918250979  0.0619284676  0.3478521086
##  [11,]   1.924862380 -4.754752e-01 -0.140718629 -0.0052276836  0.1619126667
##  [12,]   1.855903743 -8.237973e-01 -0.214264476 -0.1444741709 -0.0090563307
##  [13,]  -1.844635075  1.105675e+00  0.070527405  0.8075527579  1.1387525991
##  [14,]   0.073624465  2.204497e-01  0.295519393  0.3759423058  0.0254813454
##  [15,]  -2.514574993  5.554238e-01 -0.291894659  0.1023149686  0.4225627506
##  [ reached getOption("max.print") -- omitted 835 rows ]
summary(bankloan_ACP)# para ver la proporcion de varianza y la acumulada, se observa los dos primeros con mayor varianza
## Importance of components:
##                           PC1    PC2     PC3     PC4     PC5
## Standard deviation     1.6392 1.0838 0.66363 0.59559 0.58597
## Proportion of Variance 0.5374 0.2349 0.08808 0.07095 0.06867
## Cumulative Proportion  0.5374 0.7723 0.86038 0.93133 1.00000
biplot(bankloan_ACP)

#Se emplia la funcion “biplot” para tener un grafico de la data y la catidad de datos que estos toman se puede mejorar mediante el parametro “scale”
  • Aplicar análisis factorial exploratorio, ¿cuántos factores pueden considerarse?, según la cantidad de factores que Ud. considerará mostrar la matriz de cargas factoriales (Loadings) que muestra la relación entre las variables originales y los factores, ¿cómo se podrían describir los factores?
library(nFactors)

nScree: para escoger el numero de factores

mediante el screeplot, el grafico se puede escoger el numero de factores optimos, el punto de inflexión,

nScree(bankloan1) 
##   noc naf nparallel nkaiser
## 1   2   1         2       2

tomaremos la cantidad de 2 factores, porque este se repite mas

factnal= analisis facrotial, de la data standarizada de 850

bankloan1_AFE = factanal(bankloan1, factors = 2)
bankloan1_AFE
## 
## Call:
## factanal(x = bankloan1, factors = 2)
## 
## Uniquenesses:
##      edad direccion  ingresos deudacred deudaotro 
##     0.171     0.561     0.425     0.401     0.303 
## 
## Loadings:
##           Factor1 Factor2
## edad      0.243   0.878  
## direccion 0.109   0.654  
## ingresos  0.668   0.358  
## deudacred 0.766   0.108  
## deudaotro 0.820   0.157  
## 
##                Factor1 Factor2
## SS loadings      1.776   1.362
## Proportion Var   0.355   0.272
## Cumulative Var   0.355   0.628
## 
## Test of the hypothesis that 2 factors are sufficient.
## The chi square statistic is 0.49 on 1 degree of freedom.
## The p-value is 0.482

observar la matriz de carga

length(bankloan1_AFE) #hay 13 elementos
## [1] 13
ls(bankloan1_AFE)
##  [1] "call"         "converged"    "correlation"  "criteria"     "dof"         
##  [6] "factors"      "loadings"     "method"       "n.obs"        "PVAL"        
## [11] "rotmat"       "STATISTIC"    "uniquenesses"
bankloan1_AFE$loadings #matriz de carga
## 
## Loadings:
##           Factor1 Factor2
## edad      0.243   0.878  
## direccion 0.109   0.654  
## ingresos  0.668   0.358  
## deudacred 0.766   0.108  
## deudaotro 0.820   0.157  
## 
##                Factor1 Factor2
## SS loadings      1.776   1.362
## Proportion Var   0.355   0.272
## Cumulative Var   0.355   0.628

para graficar, que nombre tomarian cada factor?

#install.packages("gplots","RColorBrewer")

library(gplots)
library(RColorBrewer)

heatmap.2(bankloan1_AFE$loadings, col = brewer.pal(9, "Greens"),
          trace = "none", key = F, dend = "none", Colv = F,
          cexCol = 1.2, main = "Cargas de factores sobre percepciones")

Se descubre que se resume en las dos mas resaltantes y ahora se calculara las puntuaciones factoriales.

Solo se agregara scores

bankloan1_AFE = factanal(bankloan1, factors = 2, scores = "Bartlett")
bankloan1_AFE
## 
## Call:
## factanal(x = bankloan1, factors = 2, scores = "Bartlett")
## 
## Uniquenesses:
##      edad direccion  ingresos deudacred deudaotro 
##     0.171     0.561     0.425     0.401     0.303 
## 
## Loadings:
##           Factor1 Factor2
## edad      0.243   0.878  
## direccion 0.109   0.654  
## ingresos  0.668   0.358  
## deudacred 0.766   0.108  
## deudaotro 0.820   0.157  
## 
##                Factor1 Factor2
## SS loadings      1.776   1.362
## Proportion Var   0.355   0.272
## Cumulative Var   0.355   0.628
## 
## Test of the hypothesis that 2 factors are sufficient.
## The chi square statistic is 0.49 on 1 degree of freedom.
## The p-value is 0.482
ls(bankloan1_AFE)# ls para ver los elementos del factor
##  [1] "call"         "converged"    "correlation"  "criteria"     "dof"         
##  [6] "factors"      "loadings"     "method"       "n.obs"        "PVAL"        
## [11] "rotmat"       "scores"       "STATISTIC"    "uniquenesses"
head(bankloan1_AFE$scores)
##         Factor1     Factor2
## [1,]  3.2488010  0.08010951
## [2,]  0.2586808 -1.13049501
## [3,] -0.4670399  0.92894895
## [4,]  0.1516303  1.01658131
## [5,]  0.3106559 -1.69724026
## [6,] -0.7219381  0.76207863
# como poner los valores nuevos:

bankloan2 = data.frame(bankloan1, bankloan1_AFE$scores)

se puede reemplazar las 5 variables por los 2 factores hallados y ahora ya se puede usar en una regresion

Los factores se pueden reducir dichas variables en dos factores - Factor 1= Factor deuda otro - Factor 2= Factor edad

PREGUNTA 3

  • Importar a R: Enaho01-2018-100 CARAC VIV HOGAR.sav, llamarlo enaho18
library(foreign)
enaho18= read.spss("Enaho01-2018-100 CARAC VIV HOGAR.sav",to.data.frame = T)
  • Desarrollar una prueba de hipótesis para afirmar si el promedio Total de gasto mensual pagado por algún miembro del hogar (P117T2) son similares en todos los Dominios Geográfico (DOMINIO)

  • Interpretar resultados

Primero se tiene que hacer la prueba de la varianza para poner en el t-test

H0: var por dominio iguales H1: al menos existe una diferencia entre varianzas

alfa = 0.05

library(car)
leveneTest(P117T2 ~ DOMINIO, data = enaho18)
## Levene's Test for Homogeneity of Variance (center = median)
##          Df F value    Pr(>F)    
## group     7  337.03 < 2.2e-16 ***
##       37454                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

p-value = 0.000…

Decision:

si p-value < alfa , se rechaza H0 (acepta H1) si p-value > alfa , no se rechaza H0 (acepta H0)

conclusion: se acepta H1, es decir al menos existe una diferencia entre varianzas

Probar la comparacion de promedios (ANOVA de un factor)

H0: prom total de gasto mensual pagado por algún miembro del hogar (P117T2) segun los Dominios Geográfico (DOMINIO)

H1: al menos existe una diferencia de promedios

alfa = 0.05

oneway.test(P117T2 ~ DOMINIO, data = enaho18, var.equal = F)
## 
##  One-way analysis of means (not assuming equal variances)
## 
## data:  P117T2 and DOMINIO
## F = 1024.4, num df = 7, denom df = 12860, p-value < 2.2e-16

p-value = 0.000…

Conclusion: como p-value es menor al alfa, acepto H1, es decir al menos existe una diferencia de promedios Total de gasto mensual pagado por algún miembro del hogar (P117T2) segun Dominios Geograficos

PREGUNTA 4

  • Importar a R: Enaho01-2018-100 CARAC VIV HOGAR.sav, llamarlo enaho18
enaho18= read.spss("Enaho01-2018-100 CARAC VIV HOGAR.sav",to.data.frame = T)
  • Importar a R: Enaho01-2019-100 CARAC VIV HOGAR.sav, llamarlo enaho19
enaho19= read.spss("Enaho01-2018-100 CARAC VIV HOGAR.sav",to.data.frame = T)
  • Calcular el tamaño de muestra para enaho19, considerando:
  1. La fórmula para estimar el promedio poblacional del Gasto Total Mensual. Esta variable deberán crearla sumando las variables P117T2, P117T3 y P117T4.

  2. El tamaño de la población es de enaho19

  3. La varianza poblacional será del Gasto Total Mensual de enaho18

  4. Alfa de 0.05 y error de 15

  • Realizar muestreo estratificado, mediante afijación proporcional para calcular el tamaño de muestra por cada estrato (variable ESTRATO)

CALCULOS PREVIOS

GTM= data.frame(enaho18$P117T2+enaho18$P117T3+enaho18$P117T4)

names(GTM)
## [1] "enaho18.P117T2...enaho18.P117T3...enaho18.P117T4"
GTM<-rename(GTM,GASTO_TOTAL_MENSUAL=enaho18.P117T2...enaho18.P117T3...enaho18.P117T4)
enaho18<-cbind(enaho18,GTM)
View(enaho18)
names(enaho18)
##  [1] "AÑO"                 "MES"                 "CONGLOME"           
##  [4] "VIVIENDA"            "HOGAR"               "UBIGEO"             
##  [7] "DOMINIO"             "ESTRATO"             "PERIODO"            
## [10] "TIPENC"              "FECENT"              "RESULT"             
## [13] "PANEL"               "P22"                 "P101"               
## [16] "P102"                "P103"                "P103A"              
## [19] "P104"                "P104A"               "P104B1"             
## [22] "P104B2"              "P105A"               "P105B"              
## [25] "P106"                "P106A"               "P106B"              
## [28] "P110"                "P110A1"              "P110A"              
## [31] "P111A"               "P112A"               "P113A"              
## [34] "P1141"               "P1142"               "P1143"              
## [37] "P1144"               "P1145"               "P117T2"             
## [40] "P117T3"              "P117T4"              "NBI1"               
## [43] "NBI2"                "NBI3"                "NBI4"               
## [46] "NBI5"                "FACTOR07"            "Codccpp"            
## [49] "Nomccpp"             "LONGITUD"            "LATITUD"            
## [52] "ALTITUD"             "GASTO_TOTAL_MENSUAL"

calculo de la desviacion estandar del gasto con la base del 2018:

summary(enaho18$GASTO_TOTAL_MENSUAL)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    NA's 
##     0.0    55.0   110.0   157.7   211.0 10034.0   10238
GastoTotalMensual18 = enaho18$GASTO_TOTAL_MENSUAL
ind = is.finite(GastoTotalMensual18);ind # BOOLEANDO DE CANTIDAD DATOS VACIOS
##  [1]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE
## [13]  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE
## [25]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE
## [37] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE FALSE
## [49]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE FALSE  TRUE  TRUE  TRUE  TRUE
## [61]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [73]  TRUE  TRUE  TRUE
##  [ reached getOption("max.print") -- omitted 47625 entries ]
#is.finite(variables logicos)
table(ind)#datos vacios son 10238 y datos llenos  son 37462
## ind
## FALSE  TRUE 
## 10238 37462
table(ind)/sum(table(ind))#datos vacios representan 21.46% de la data
## ind
##     FALSE      TRUE 
## 0.2146331 0.7853669
S2 = var(GastoTotalMensual18[ind]) # (estimacion de la DEsviacion con la data 2018)
#solo considera los T los que tienen datos

S2 # varianza poblacional conocida= 24580.28
## [1] 24580.28
N = nrow(enaho19);N # tamaño de la Poblacion 2019
## [1] 47700
alfa = 0.05 # Nivel de significacion
z = qnorm(1-alfa/2);z# quantil
## [1] 1.959964
e = 15 # +- 15 soles

calculo del tamaño de la muestra para estimar el gasto promedio => tamaño de muestra para estimar la media poblacional

nm =  ceiling(z^2*S2*N/((N-1)*e^2 + z^2*S2)) # REDONDEO AL MAYOR
nm
## [1] 417

ceiling para redondear al mayor n del enaho= 417, tamaño muestral del 2016

MUESTREO ESTRATIFICADO

La poblacion está estraficada:

table(enaho19$ESTRATO)#la cantidad de habitantes 
## 
##                    De 500 000 a más habitantes 
##                                           7360 
##                De 100 000 a 499 999 habitantes 
##                                           8274 
##                  De 50 000 a 99 999 habitantes 
##                                           3739 
##                  De 20 000 a 49 999 habitantes 
##                                           2962 
##                   De 2 000 a 19 999 habitantes 
##                                           6412 
##                      De 500 a 1 999 habitantes 
##                                           2912 
##  Área de Empadronamiento Rural (AER) Compuesto 
##                                          12164 
##     Área de Empadronamiento Rural (AER) Simple 
##                                           3877
k = length(table(enaho19$ESTRATO)) # cantidad de estratos, 8

AFIJACION PROPORCIONAL

Se extrae nuestras de cada estrato proporcional al tamaño del estrato

Ni = table(enaho19$ESTRATO)#la cantidad de poblacion por estrato
ni2 = ceiling(Ni/N*nm)

View(ni2)

RESUMEN

sum(ni2)#estratificado proporcional
## [1] 421

EXTRACCION DE LA MUESTRA ESTRAFICADA

cbind(Ni, ni2)#Ni=cantidad de datos por estrato, ni2=la cantidad por afijacion de muestra por estrato
##                                                   Ni ni2
##  De 500 000 a más habitantes                    7360  65
##  De 100 000 a 499 999 habitantes                8274  73
##  De 50 000 a 99 999 habitantes                  3739  33
##  De 20 000 a 49 999 habitantes                  2962  26
## De 2 000 a 19 999 habitantes                    6412  57
##  De 500 a 1 999 habitantes                      2912  26
##  Área de Empadronamiento Rural (AER) Compuesto 12164 107
##  Área de Empadronamiento Rural (AER) Simple     3877  34

Usaremos la afijacion proporcional

enaho19me = NULL#llenaremos este objeto

etiq = names(Ni)#etiqueta
for(i in 1:k){
  ind = (enaho19$ESTRATO==etiq[i]) #vector logico
  enaho19k = enaho19[ind,]
  muestrai = sample(1:Ni[i],ni2[i],replace = F) # vecto para extraccion aleatoria x estrato
  #de la primera corrida se va querer muetsrear o seleccionar ni2
  enaho19me = rbind(enaho19me,enaho19k[muestrai,]) # apilando los datasets de muestreo
}

Se usa rbind colocar los datos por filas,primera corrida esta vacia + el primer muestreo, y como el vacio no cuenta se suman y se observa el primer muestreo

sum(ni2)
## [1] 421
sum(table(enaho19me$ESTRATO))
## [1] 421