library(tidyverse)
library(gtools)
library(dplyr)
library(descr)Poblaciones y muestras.Práctica 3
3er. Trabajo Práctico
Librerías utilizadas
Ejercicio 1
1. El número de camas de 5 hospitales viene dado por la tabla
| Hospital | Números de camas |
|---|---|
| H1 | 160 |
| H2 | 220 |
| H3 | 850 |
| H4 | 510 |
| H5 | 110 |
Datos de la Población
poblacion=c(160,220,850,510,110)
hosp=c("h1","h2","h3","h4","h5")
names(poblacion)=hosp
N=length(poblacion)
poblacion h1 h2 h3 h4 h5
160 220 850 510 110
Media y Varianza poblacional
μ=sum(poblacion)/N
σ2=sum((poblacion-μ)^2/N)
str_c("Media= ",μ," Varianza= ",σ2)[1] "Media= 370 Varianza= 76840"
Cálculo de muestras posibles y se establece un Marco de datos llamado “Muestras”
n=2 #tamaño muestral (variable)
x=poblacion
muestreo<-combinations(N,n,x,set=F)
nm<-length(row_number(muestreo)) #cantidad de muestras posibles dado N
str_c("Cantidad de muestras posibles de tamaño ",n," = ",nm)[1] "Cantidad de muestras posibles de tamaño 2 = 10"
muestras<-data.frame(unite(data.frame(combinations(N,n,hosp,set=F)),"Muestra",c(X1,X2),sep=","),muestreo)Muestras con medias y varianzas
#calculo de la media
Ẋ.muestras<-(rowSums(muestreo))/n #vector de medias muestrales
#calculo de varianzas
S2.muestras<-apply(muestreo,1,var)#vector de varianzas
tabla.muestras<-tibble(
as_tibble(muestras),
Medias=Ẋ.muestras,
Varianzas=S2.muestras
)
tabla.muestras# A tibble: 10 × 5
Muestra X1 X2 Medias Varianzas
<chr> <dbl> <dbl> <dbl> <dbl>
1 h1,h2 160 220 190 1800
2 h1,h3 160 850 505 238050
3 h1,h4 160 510 335 61250
4 h1,h5 160 110 135 1250
5 h2,h3 220 850 535 198450
6 h2,h4 220 510 365 42050
7 h2,h5 220 110 165 6050
8 h3,h4 850 510 680 57800
9 h3,h5 850 110 480 273800
10 h4,h5 510 110 310 80000
Esperanza y Varianza muestral
dist.Ẋ<-as_tibble(prop.table(table(Ẋ.muestras))) #distribucion de probabilidad de medias
str(dist.Ẋ)tibble [10 × 2] (S3: tbl_df/tbl/data.frame)
$ Ẋ.muestras: chr [1:10] "135" "165" "190" "310" ...
$ n : num [1:10] 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1
Ẋ.muestras<-as.numeric(dist.Ẋ$Ẋ.muestras)
E.Ẋ<-sum(Ẋ.muestras*dist.Ẋ$n)
var.Ẋ<-sum((Ẋ.muestras-E.Ẋ)^2*dist.Ẋ$n)
str_c("Para estimador muestral Media:"," Esperanza=",E.Ẋ,", Varianza=",var.Ẋ)[1] "Para estimador muestral Media: Esperanza=370, Varianza=28815"
Comprobación
E.Ẋ-μ #Si cero, entonces son iguales[1] 0
((N-n)/(N-1))*σ2/n #Fórmula varianza insesgada de la medias muestrales[1] 28815
Se comprueba que μ y Var(Ẋ)son iguales a los estimadores calculados previamente
(N/(N-1))*σ2 #Fórmula esperanza de la varianza muestral E[S²] [1] 96050
dist.S2<-as.numeric(prop.table(table(S2.muestras))) #distribucion de probabilidad de varianzas
E.S2<-sum(S2.muestras*dist.S2)
str_c("Para estimador muestral Varianza:"," Esperanza= ",E.S2)[1] "Para estimador muestral Varianza: Esperanza= 96050"
Se comprueba que E[S²] y el estimador calculado por muestreo son iguales.
Ejercicio 2
Total poblacional t y los totales de cada muestra T
#valores T
totales=tabla.muestras$X1+tabla.muestras$X2
tabla.muestras2<-tabla.muestras %>% select(Muestra,X1,X2)
tabla.muestras2<-tibble(tabla.muestras2,T=totales)
tabla.muestras2# A tibble: 10 × 4
Muestra X1 X2 T
<chr> <dbl> <dbl> <dbl>
1 h1,h2 160 220 380
2 h1,h3 160 850 1010
3 h1,h4 160 510 670
4 h1,h5 160 110 270
5 h2,h3 220 850 1070
6 h2,h4 220 510 730
7 h2,h5 220 110 330
8 h3,h4 850 510 1360
9 h3,h5 850 110 960
10 h4,h5 510 110 620
#calculo de T'
str_c("Total poblacional(t)= ",sum(x))[1] "Total poblacional(t)= 1850"
t<-sum(x)
tm<-tabla.muestras2$T #vector de totales muestrales
media.tm<-mean(tm)
var.tm<-sum((tm-media.tm)**2)/nm
str_c("Para estimador T:"," Media=",media.tm,", Varianza=",var.tm)[1] "Para estimador T: Media=740, Varianza=115260"
tm2<-tm*N/n
"Totales muestrales T'=T*N/n "[1] "Totales muestrales T'=T*N/n "
tm2 [1] 950 2525 1675 675 2675 1825 825 3400 2400 1550
media.tm2<-mean(tm2)
var.tm2<-sum((tm2-media.tm2)**2)/nm
str_c("Para estimador T':"," Media=",media.tm2,", Varianza=",var.tm2)[1] "Para estimador T': Media=1850, Varianza=720375"
Ejercicio 3
Esta tabla se considera como la población:
datossi<-read_table("sida.dat",col_names = TRUE) %>% drop_na
── Column specification ────────────────────────────────────────────────────────
cols(
id = col_character(),
sida = col_double()
)
datossi# A tibble: 120 × 2
id sida
<chr> <dbl>
1 a1 1
2 a2 0
3 a3 1
4 a4 0
5 a5 1
6 a6 0
7 a7 0
8 a8 1
9 a9 0
10 a10 0
# … with 110 more rows
Proporción poblacional
Ns=length(datossi$id)
pdatossi<-datossi %>%
group_by(sida)%>%
summarise(casos=n(),proporcion=n()/Ns)
pdatossi# A tibble: 2 × 3
sida casos proporcion
<dbl> <int> <dbl>
1 0 94 0.783
2 1 26 0.217
Varianza poblacional
p=round(pdatossi$proporcion[2],3)
var1.sida=round(sum((datossi$sida-mean(datossi$sida))^2)/Ns,3) #varianza poblacional
var2.sida=round(p*(1-p),3)
str_c("p= ",p," σ2= ",var1.sida," p(1-p)= ",var2.sida)[1] "p= 0.217 σ2= 0.17 p(1-p)= 0.17"
Se toman 3 muestras de tamaño 30 sin reposición, y las muestras son diferentes, por que se está haciendo de forma aleatoria.
m1<-datossi$sida%>%sample(30)
m2<-datossi$sida%>%sample(30)
m3<-datossi$sida%>%sample(30)
m1;m2;m3 [1] 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0
[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0
[1] 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0
Se define una función que calcula la proporción muestral de cada muestra:
f<-function(x){
pp=sum(x)/length(x)
pp
}
f(m2)[1] 0.1
Se toman 100 muestras y se guardan en un vector: se calcula la esperanza y la varianza de la proposición muestral.
x<-datossi$sida
muestrass=NULL
for (i in 1:10) {
muestrass[i]<-f(sample(x,30))
}
dist.ṗ<-as_tibble(prop.table(table(muestrass))) #distribucion de probabilidad de medias
str(dist.ṗ)tibble [7 × 2] (S3: tbl_df/tbl/data.frame)
$ muestrass: chr [1:7] "0.133333333333333" "0.166666666666667" "0.2" "0.233333333333333" ...
$ n : num [1:7] 0.3 0.2 0.1 0.1 0.1 0.1 0.1
ṗ.muestras<-as.numeric(dist.ṗ$muestrass)
n=30
E.ṗ<-round(sum(ṗ.muestras*dist.ṗ$n),3)
var.ṗ<-round(sum((ṗ.muestras-E.ṗ)^2*dist.ṗ$n),3)
σ2.ṗ=round((Ns-n)/((n-1)*Ns)*E.ṗ*(1-E.ṗ),3)
str_c("Para estimador muestral Media:"," Esperanza=",E.ṗ,", Varianza=",var.ṗ," σ2.ṗ= ",σ2.ṗ)[1] "Para estimador muestral Media: Esperanza=0.207, Varianza=0.005 σ2.ṗ= 0.004"