Poblaciones y muestras.Práctica 3

Author

Hernán Vargas

3er. Trabajo Práctico

Librerías utilizadas

library(tidyverse)
library(gtools)
library(dplyr)
library(descr)

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"