Integrantes del equipo de trabajo:
William Leonel Jacinto Salazar
installed.packages("readxl")
library(readxl) #Carga el paquete readxl que contiene la función read_excel
## Warning: package 'readxl' was built under R version 4.1.2
bb=read_excel("BA.xlsx", sheet = 1) #Importa la base de datos del municipio de Aguilares en formato Excel a R
bb #Observamos la base de datos en R
## # A tibble: 518 x 10
## `Numero de personas ~ `Gasto total del~ `Ingreso total d~ `Condición de pobr~
## <dbl> <dbl> <dbl> <chr>
## 1 3 308. 1958. No pobre
## 2 3 308. 1958. No pobre
## 3 3 308. 1958. No pobre
## 4 2 109. 201. Pobreza relativa
## 5 2 109. 201. Pobreza relativa
## 6 3 239. 1917. No pobre
## 7 3 239. 1917. No pobre
## 8 3 239. 1917. No pobre
## 9 2 133. 377. No pobre
## 10 2 133. 377. No pobre
## # ... with 508 more rows, and 6 more variables:
## # Estado familiar (Cualitativa) <chr>,
## # Tipo de alumbrado de la vivienda <chr>,
## # Forma de abastecimiento de agua de la vivienda <chr>,
## # Forma de tenencia de la vivienda <chr>,
## # Título o diploma que obtuvo en el nivel más alto que aprobó <chr>,
## # Vivienda en buen estado <chr>
View(bb) #Visualizamos la base de datos en formato de tabla en R
names(bb) #Nombres de las variables en la base de datos
## [1] "Numero de personas miembros del hogar (Discreta)"
## [2] "Gasto total del hogar"
## [3] "Ingreso total del hogar"
## [4] "Condición de pobreza del hogar (Cualitativa)"
## [5] "Estado familiar (Cualitativa)"
## [6] "Tipo de alumbrado de la vivienda"
## [7] "Forma de abastecimiento de agua de la vivienda"
## [8] "Forma de tenencia de la vivienda"
## [9] "Título o diploma que obtuvo en el nivel más alto que aprobó"
## [10] "Vivienda en buen estado"
#Histograma de ingreso total del hogar (alternativa 1)
hist(bb$`Gasto total del hogar`, main = "Histograma de ingreso total del hogar", xlab = "Ingreso total del hogar", ylab = "Frecuencia", col = "#3335FF", breaks = 10, labels = TRUE)
#Histograma de ingreso total del hogar(alternativa 2):
histPer <- function(x, ...) {
H <- hist(x, plot = FALSE, breaks=10)
H$density <- with(H, 100 * density* diff(breaks)[1])
labs <- paste(round(H$density), "%", sep="")
plot(H, freq = FALSE, labels = labs, ylim=c(0, 1.08*max(H$density)),...)
}
histPer(bb$`Ingreso total del hogar`, main="Histograma de ingreso total del hogar", xlab = "Ingreso total del hogar", ylab = "Porcentajes", col="#3335FF")
#Histograma de gasto total del hogar (alternativa 1)
hist(x = bb$`Gasto total del hogar`, main = "Histograma de gasto total del hogar", xlab = "Gasto total del hogar", ylab = "Frecuencia", col = "#FF3339", breaks = 10, labels = TRUE)
#Histograma de gasto total del hogar (alternativa 2)
histPer <- function(x, ...) {
H <- hist(x, plot = FALSE, breaks=10)
H$density <- with(H, 100 * density* diff(breaks)[1])
labs <- paste(round(H$density), "%", sep="")
plot(H, freq = FALSE, labels = labs, ylim=c(0, 1.08*max(H$density)),...)
}
histPer(bb$`Gasto total del hogar`, main="Histograma de gasto total del hogar", xlab = "Gasto total del hogar", ylab = "Porcentajes", col="#FF3339")
nm=table(bb$`Numero de personas miembros del hogar (Discreta)`)
nm
##
## 1 2 3 4 5 6 7 8 9
## 16 70 96 152 80 66 21 8 9
pn=round(prop.table(nm)*100, 2)
pn
##
## 1 2 3 4 5 6 7 8 9
## 3.09 13.51 18.53 29.34 15.44 12.74 4.05 1.54 1.74
barplot(pn, main="Gráfico de barras de número de miembros del hogar", xlab="Número de miembros del hogar\n", ylab = "Porcentajes", ylim = c(0, 60), sub="Noviembre-2021", col=c("#3357FF", "#B633FF", "#FF5233", "#FFE933", "#4DFF33", "#FFCA33", "#33BAFF", "#D1FF33"), legend.text = rownames(pn))
fr <- table(bb$`Título o diploma que obtuvo en el nivel más alto que aprobó`)
fr
##
## Bachillerato general Bachillerato técnico
## 42 49
## No obtuvo Profesorado
## 191 1
## Técnico superior no universitario Título universitario de 5 años
## 5 13
pr=round(prop.table(fr)*100, 2)
pr
##
## Bachillerato general Bachillerato técnico
## 13.95 16.28
## No obtuvo Profesorado
## 63.46 0.33
## Técnico superior no universitario Título universitario de 5 años
## 1.66 4.32
bare=barplot(pr, main="Gráfico de barras de Título o diploma que obtuvo en el nivel más alto que aprobó", xlab="Título o diploma que obtuvo en el nivel más alto que aprobó\n", ylab = "Porcentajes", ylim = c(0, 70), col=c("#3433FF", "#AF33FF", "#339BFF", "#33FFD5", "#33FF69", "#62FF33", "#DEFF33"), sub="Noviembre-2021", legend.text = rownames(pr))
fv <- table(bb$`Forma de tenencia de la vivienda`)
fv
##
## Inquilino(a)
## 94
## Ocupante gratuito
## 95
## Propietario(a)
## 284
## Propietario(a) de la vivienda en terreno privado
## 10
## Propietario(a) de la vivienda en terreno público
## 33
## Propietario(a) de la vivienda pero la está pagando a plazos
## 2
pv=round(prop.table(fv)*100, 2)
pv
##
## Inquilino(a)
## 18.15
## Ocupante gratuito
## 18.34
## Propietario(a)
## 54.83
## Propietario(a) de la vivienda en terreno privado
## 1.93
## Propietario(a) de la vivienda en terreno público
## 6.37
## Propietario(a) de la vivienda pero la está pagando a plazos
## 0.39
names(pv) = c("Inquilino", "Ocupante gratuito", "Propietario", "Propietario público", "Propietario(a) de la vivienda en terreno público", "Propietario(a) de la vivienda en terreno privado")
n <- length(pv);n
## [1] 6
hoja <- data.frame(pv)
hoja
## Var1 Freq
## 1 Inquilino 18.15
## 2 Ocupante gratuito 18.34
## 3 Propietario 54.83
## 4 Propietario público 1.93
## 5 Propietario(a) de la vivienda en terreno público 6.37
## 6 Propietario(a) de la vivienda en terreno privado 0.39
etiq <- c(paste(hoja$Var1, "-", hoja$Freq))
pie(pv, main="Gráfico de pastel de forma de tenencia de la vivienda", xlab=" Forma de tenencia de la vivienda\n\n\n", labels=etiq, col=rainbow(n), border=TRUE, sub="Noviembre-2021")
#Tabla de contingencia de las variables cualitativas Estado familiar y forma de tenencia de la vivienda:
tablaRazonForma=table(bb$`Estado familiar (Cualitativa)`, bb$`Forma de tenencia de la vivienda`)
tablaRazonForma
##
## Inquilino(a) Ocupante gratuito Propietario(a)
## Acompañado(a) 18 12 42
## casado(a) 0 0 1
## Casado(a) 14 20 64
## Divorciado(a) 2 0 2
## Separado(a) 10 13 28
## Soltero(a) 48 47 119
## Viudo(a) 2 3 28
##
## Propietario(a) de la vivienda en terreno privado
## Acompañado(a) 4
## casado(a) 0
## Casado(a) 0
## Divorciado(a) 0
## Separado(a) 2
## Soltero(a) 4
## Viudo(a) 0
##
## Propietario(a) de la vivienda en terreno público
## Acompañado(a) 2
## casado(a) 0
## Casado(a) 2
## Divorciado(a) 0
## Separado(a) 5
## Soltero(a) 20
## Viudo(a) 4
##
## Propietario(a) de la vivienda pero la está pagando a plazos
## Acompañado(a) 2
## casado(a) 0
## Casado(a) 0
## Divorciado(a) 0
## Separado(a) 0
## Soltero(a) 0
## Viudo(a) 0
bc=bb[,1:3] #Creamos una base de datos con tres variables cuantitativas
bc
## # A tibble: 518 x 3
## `Numero de personas miembros del h~ `Gasto total del ho~ `Ingreso total del ~
## <dbl> <dbl> <dbl>
## 1 3 308. 1958.
## 2 3 308. 1958.
## 3 3 308. 1958.
## 4 2 109. 201.
## 5 2 109. 201.
## 6 3 239. 1917.
## 7 3 239. 1917.
## 8 3 239. 1917.
## 9 2 133. 377.
## 10 2 133. 377.
## # ... with 508 more rows
View(bc) #Visualizamos la base de datos en formato de tabla dentro de RStudio
#Se realiza un análisis de correlación:
pairs(bc) #Matriz de diagramas de dispersión con las tres variables cuantitativas
cor(bc, use = "complete.obs") #Matriz de correlaciones
## Numero de personas miembros del hogar (Discreta)
## Numero de personas miembros del hogar (Discreta) 1.0000000
## Gasto total del hogar -0.3433178
## Ingreso total del hogar 0.3983835
## Gasto total del hogar
## Numero de personas miembros del hogar (Discreta) -0.3433178
## Gasto total del hogar 1.0000000
## Ingreso total del hogar 0.3537934
## Ingreso total del hogar
## Numero de personas miembros del hogar (Discreta) 0.3983835
## Gasto total del hogar 0.3537934
## Ingreso total del hogar 1.0000000
#Se realiza una análisis de regresión lineal simple:
regresion <- lm(bc$`Gasto total del hogar` ~ bc$`Ingreso total del hogar`, data = bc, na.action = na.omit)
summary(regresion)
##
## Call:
## lm(formula = bc$`Gasto total del hogar` ~ bc$`Ingreso total del hogar`,
## data = bc, na.action = na.omit)
##
## Residuals:
## Min 1Q Median 3Q Max
## -101.61 -35.68 -19.71 22.38 293.79
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 82.16737 4.16590 19.724 <2e-16 ***
## bc$`Ingreso total del hogar` 0.03678 0.00428 8.592 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 60.68 on 516 degrees of freedom
## Multiple R-squared: 0.1252, Adjusted R-squared: 0.1235
## F-statistic: 73.83 on 1 and 516 DF, p-value: < 2.2e-16
La estimación de los parámetros de la ecuación de la recta de mínimos cuadrados que relaciona la variable gasto total del hogar en función de la variable ingreso total del hogar son:
Intercepto: 154.8406
Coeficiente: 0.3223
Por lo tanto, en este ejemplo la ecuación de la recta de mínimos cuadrados es: y=154.8406+0.3223x
plot(bb$`Ingreso total del hogar`, bb$`Gasto total del hogar`, xlab="Ingreso total del hogar", ylab="Gasto total del hogar") #Diagrama de dispersión entre las variables
abline(regresion)
Distribución binomial. Una reconocida empresa productora de preservativos masculinos tiene como sello de calidad que el 97% de los preservativos producidos no tienen ningun defecto de producción. En una prueba de control de calidad, se toman 6 muestras al azar para su analisis. Encontrar la distribucion de probabilidad binomial de esta prueba.
Sea X = Número de preservativos defectuosos en la muestra
n=6 #Tamaño de la muestra
p=0.03 #Probabilidad de éxito
x=c(0, 1, 2, 3, 4, 5, 6) #Valores que toma la variable aleatoria binomial
x
## [1] 0 1 2 3 4 5 6
pb=dbinom(x, n, p) #Distribución de probabilidad de la variable binomial
pb
## [1] 8.329720e-01 1.545721e-01 1.195145e-02 4.928434e-04 1.143193e-05
## [6] 1.414260e-07 7.290000e-10
pab=pbinom(x, n, p) #Distribución de probabilidad acumulada de la variable binomial
pab
## [1] 0.8329720 0.9875441 0.9994956 0.9999884 0.9999999 1.0000000 1.0000000
plot(x, pb, main = "Distribución de probabilidad de la variable X binomial")
plot(x, pb, type="h", main = "Distribución de probabilidad de la variable X binomial")
plot(x, pab, main = "Distribucion de probabilidad acumulada de la variable X binomial")
plot(x, pab, type="s", main = "Distribucion de probabilidad acumulada de la variable X binomial")
Distribución de Poisson. En promedio 2 personas entran a la sala de urgencias por ataques de perros al mes en cierto hospital. Encontrar la distrubucion de probalbilidades de la variable aleatoria.
Sea X=Número de personas que entran a la sala de urgencias por ataques de perros en un mes
l=2 #número de personas que entran a la sala de urgencias por ataques de perros en un mes (Lambda)
x=c(0:16) #Valores que toma la variable de Poisson: X=0, 1, 2, 3, 4, ...
x
## [1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
pp=dpois(x,l) #Distribución de probabilidad de la variable de Poisson
pp
## [1] 1.353353e-01 2.706706e-01 2.706706e-01 1.804470e-01 9.022352e-02
## [6] 3.608941e-02 1.202980e-02 3.437087e-03 8.592716e-04 1.909493e-04
## [11] 3.818985e-05 6.943609e-06 1.157268e-06 1.780413e-07 2.543447e-08
## [16] 3.391262e-09 4.239078e-10
pap=ppois(x, l) #Distribución de probabilidad acumulada de la variable de Poisson
pap
## [1] 0.1353353 0.4060058 0.6766764 0.8571235 0.9473470 0.9834364 0.9954662
## [8] 0.9989033 0.9997626 0.9999535 0.9999917 0.9999986 0.9999998 1.0000000
## [15] 1.0000000 1.0000000 1.0000000
plot(x, pp, main = "Distribución de probabilidad de la variable X de poisson")
plot(x, pp, type="h", main = "Distribución de probabilidad de la variable X de poisson")
plot(x, pap, main = "Distribucion de probabilidad acumulada de la variable X de poisson")
plot(x, pap, type="s", main = "Distribucion de probabilidad acumulada de la variable X de poisson")
Distribución normal. Suponga que 100 personas tramitaron su licencia de conducir en SETRACEN en un dia concurrido, en promedio cada persona se tardó 50 minutos en realizar el tramite y 5 minutos con desviacion estandar. El tiempo para realizar este tramite sigue una distribucion aproximadamente normal.
mu=50 #Media de la variable normal
sd=5 #Desviación estándar de la variable normal
x=rnorm(1:100, mu, sd) #Genera un vector de valores aleatorios provenientes de una distribución normal con parámetros mu=50, y sd=5.
pnr=dnorm(x, mu, sd) #Obtiene un vector de valores de densidad que caen sobre la curva normal
plot(x, pnr, main = "Curva normal de la variable aleatoria X") #Dibuja la curva normal
#Grafico de la probabilidad asociada al a que una persona seleccionada al azar haya completado el tramite en menos de 43 minutos valor de z<-1.4 [P(x<43)]
z1=(43-mu)/sd #Estandarizamos el valor de la variable
z1
## [1] -1.4
cord.x=c(-3, seq(-3, -1.4, 0.01), -1.4)
cord.y=c(0, dnorm(seq(-3, -1.4, 0.01)), 0)
curve(dnorm(x, 0, 1), xlim = c(-3, 3), main="Normal estandar", xlab = "Z")
polygon(cord.x, cord.y, col="#4DFF33")
area=pnorm(-1.4, 0, 1)
area
## [1] 0.08075666
result=paste("P(Z<", -1.4, ")=", signif(area, digits = 4))
mtext(result, 3)
#Grafico que representa la probabilidad que una persona seleccionada al azar haya completado el tramite entre 46 y 53 minutos de espera del área en el intervalo z1=-0.8<Z<z2=0.6 [P(46X<53)]
z1=(46-mu)/sd #Estandarizamos el valor del límite inferior del intervalo
z1
## [1] -0.8
z2=(53-mu)/sd #Estandarizamos el valor del límite superior del intervalo
z2
## [1] 0.6
cord.x=c(-0.8, seq(-0.8, 0.6, 0.01), 0.6)
cord.y=c(0, dnorm(seq(-0.8, 0.6, 0.01)), 0)
curve(dnorm(x, 0, 1), xlim = c(-3, 3), main="Normal estandar", xlab = "Z")
polygon(cord.x, cord.y, col="#4DFF33")
area=pnorm(0.6, 0, 1)-pnorm(-0.8, 0, 1)
area
## [1] 0.5138915
result=paste("P(", -0.8, "< Z <", 0.6, ")=", signif(area, digits = 4))
mtext(result, 3)
#Grafico de la probabilidad asociada a que una persona seleccionada al azar se tarde mas de 57 minutos al valor de z>=1.4 [P(x>57)]
z1=(57-mu)/sd #Estandarizamos el valor de la variable
z1
## [1] 1.4
cord.x=c(1.4, seq(1.4, 3.0, 0.01), 3.0)
cord.y=c(0, dnorm(seq(1.4, 3.0, 0.01)), 0)
curve(dnorm(x, 0, 1), xlim = c(-3, 3), main="Normal estandar", xlab = "Z")
polygon(cord.x, cord.y, col="#4DFF33")
area=1-pnorm(1.4, 0, 1)
area
## [1] 0.08075666
result=paste("P(Z>", 1.4, ")=", signif(area, digits = 4))
mtext(result, 3)