#El número de camas de 5 hospitales viene dado por la tabla #a. Abrid el R y entrad los datos anteriores. Esto puede hacerse como sigue
Numerocamas=c(160,220,850,510,110)
Numerocamas
## [1] 160 220 850 510 110
Hospitales <- factor(paste("H",1:5,sep =""))
Hospitales
## [1] H1 H2 H3 H4 H5
## Levels: H1 H2 H3 H4 H5
Tabla1=data.frame(Hospitales,Numerocamas)
Tabla1
## Hospitales Numerocamas
## 1 H1 160
## 2 H2 220
## 3 H3 850
## 4 H4 510
## 5 H5 110
#b. Calculad la media poblacional y la varianza poblacional (atención: la instrucción var divide por n − 1 y aquí nos interesa dividir por n).
mediapob=mean(Numerocamas)
mediapob
## [1] 370
#muestra cuántos elementos tiene
n=length(Numerocamas)
n
## [1] 5
var(Numerocamas)
## [1] 96050
#Podemos calcular la varianza de la población simplemente multiplicando la varianza de la muestra por (n-1) / n de la siguiente manera:
varianzapob=var(Numerocamas)*(n-1)/n
varianzapob
## [1] 76840
#Con el Bloc de notas, o con el editor que queráis, haced un fichero ASCII que se llame, por ejemplo, muestras.dat, con todas las muestras sin reposición de 2 elementos
choose(5,2)
## [1] 10
library(gtools)
## Warning: package 'gtools' was built under R version 4.2.3
muestras.sr<-combinations(length(Numerocamas),2,Numerocamas,set=F)
muestras.sr
## [,1] [,2]
## [1,] 160 220
## [2,] 160 850
## [3,] 160 510
## [4,] 160 110
## [5,] 220 850
## [6,] 220 510
## [7,] 220 110
## [8,] 850 510
## [9,] 850 110
## [10,] 510 110
colnames(muestras.sr)<-paste("X", 1:ncol(muestras.sr),sep= "")
rownames(muestras.sr)<-paste("H",1:5,1:nrow(muestras.sr),sep="")
muestras.sr
## X1 X2
## H11 160 220
## H22 160 850
## H33 160 510
## H44 160 110
## H55 220 850
## H16 220 510
## H27 220 110
## H38 850 510
## H49 850 110
## H510 510 110
#GUARDAR muestras.sin reemplazo como el archivo muestras.dat.
write.csv(muestras.sr,file="muestra.dat")
#d.Leed el fichero anterior como un data frame; pongamos que se llama muestras
muestra <- read.csv2("~/MAESTRIA ESTADISTICA/ASIGNATURA III-TECNICA DE MUESTREO/Practica03/muestra.csv", stringsAsFactors=TRUE)
View(muestra)
#e Construid variables con la media y la varianza de cada muestra. Si la media se llama, por ejemplo, xmed, entonces se puede ampliar el data frame con la instrucción
xmed=apply(muestra[ , 2:3], 1, mean)
xmed
## [1] 190 505 335 135 535 365 165 680 480 310
#Ampliad también el data frame con las varianzas.
xvar=apply(muestra[ , 2:3], 1, var)
xvar
## [1] 1800 238050 61250 1250 198450 42050 6050 57800 273800 80000
muestras=data.frame(muestra,xmed,xvar);muestras
## muestra x1 x2 xmed xvar
## 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
#Calculad la esperanza y la varianza de la media muestral (atención: el mismo comentario con n)
medmuestral=mean(muestras$xmed)
medmuestral
## [1] 370
#Aqui la varianza en R divide por n-1, entonces para el #calculo haremos lo siguiente. El calculo de la varianza #muestral es:
xmedmuestral= c(muestras$xmed)
varmed.muestral=function(X){(sum((X-mean(X))^2)/length(X))}
varmed.muestral(xmedmuestral)
## [1] 28815
varmed.muestral.ajus=varmed.muestral(xmedmuestral)
varmed.muestral.ajus
## [1] 28815
#Esperanza de la media muestral es igual a la media poblacional g1 La varianza de la media muestral es igual a la varianza poblacional sobre n multiplicado por el factor de correccion
#media poblacional=370
mediapob=mean(Numerocamas)
mediapob
## [1] 370
#media muestral=370
medmuestral=mean(muestras$xmed)
medmuestral
## [1] 370
#g1 Primero tenemos la varianza poblacional=76840
varianzapob=var(Numerocamas)*((length(Numerocamas)-1)/length(Numerocamas))
varianzapob
## [1] 76840
#Luego tenemos la varianza muestral ajustada=28815
varmed.muestral.ajus
## [1] 28815
#debemos demostrar que la varianza de la media muestral x, es igual a la varianza poblacional dividido n multiplicado por el factor de correccion.
ajuste=((5-2)/(5-1))
varianza.insesgada=ajuste*(varianzapob/2)
varianza.insesgada
## [1] 28815
#Comprobad que Esperanza de la Scuad es igual a la varianza poblacional por N/N-1
esperanza=mean(muestras$xvar)
esperanza
## [1] 96050
#Entonces calculamos la varianza poblacional por el factor de correccion
varpoblacional.ajus=ajus=5/(5-1)*varianzapob
varpoblacional.ajus
## [1] 96050
#2. Continuamos con el data frame anterior, y vamos a hacer el problema 3 de la lista. #En el problema 3 de la lista dice así: # con muestreo sin reposición de tamaño n = 2. #a. Calculad el total poblacional t y los totales de cada muestra T .
# total poblacional:
total<-sum(Tabla1$Numerocamas)
total
## [1] 1850
#Para calcular el total de cada muestra T:
muestras$totales_muestrales<-rowSums(muestras[, c(2,3)], na.rm = TRUE )
muestras
## muestra x1 x2 xmed xvar totales_muestrales
## 1 H1,H2 160 220 190 1800 380
## 2 H1,H3 160 850 505 238050 1010
## 3 H1,H4 160 510 335 61250 670
## 4 H1,H5 160 110 135 1250 270
## 5 H2,H3 220 850 535 198450 1070
## 6 H2,H4 220 510 365 42050 730
## 7 H2,H5 220 110 165 6050 330
## 8 H3,H4 850 510 680 57800 1360
## 9 H3,H5 850 110 480 273800 960
## 10 H4,H5 510 110 310 80000 620
#b. Calculad la esperanza y la varianza del total muestral. ¿Se cumple E[T] = t?
esp_T<-mean(muestras$totales_muestrales)
esp_T
## [1] 740
var_T<-sd(muestras$totales_muestrales)^2
var_T
## [1] 128066.7
comprob4<-c(total,esp_T)
comprob4
## [1] 1850 740
#c. Comprobad que T=(N/n)*t cumple: E[T]=t
N=length(Numerocamas)
N
## [1] 5
n=2
muestras$totales_muestrales_ajust<-rowSums(muestras[, c(2,3)],na.rm=TRUE )*N/n
muestras
## muestra x1 x2 xmed xvar totales_muestrales totales_muestrales_ajust
## 1 H1,H2 160 220 190 1800 380 950
## 2 H1,H3 160 850 505 238050 1010 2525
## 3 H1,H4 160 510 335 61250 670 1675
## 4 H1,H5 160 110 135 1250 270 675
## 5 H2,H3 220 850 535 198450 1070 2675
## 6 H2,H4 220 510 365 42050 730 1825
## 7 H2,H5 220 110 165 6050 330 825
## 8 H3,H4 850 510 680 57800 1360 3400
## 9 H3,H5 850 110 480 273800 960 2400
## 10 H4,H5 510 110 310 80000 620 1550
Esp_Tprima <- mean(muestras$totales_muestrales_ajust)
Esp_Tprima
## [1] 1850
Comprob5<-c(total,Esp_Tprima)
Comprob5
## [1] 1850 1850
#3. Cambiad de directorio de trabajo para hacer este ejercicio. Con la instrucción read.table leed el fichero #sida.dat que tiene la población del problema 4.
base_sida<- read.csv("C:/Users/HP/OneDrive/Escritorio/Maestria en Estadistica/Tecnica de Muestreo/sida.dat", sep="", stringsAsFactors=TRUE)
View(base_sida)
#a. Calculad la proporción poblacional de enfermos de sida y la varianza de la población. Comprobad que #σ2 = p(1 − p).
#Tabla de Frecuencias Absolutas y Relativas
frsida=ftable(base_sida$sida)
frsida
## 0 1
##
## 94 26
#Calculamos el porcentaje
porc.sida=prop.table(frsida)
porc.sida
## 0 1
##
## 0.7833333 0.2166667
p <- porc.sida [,2]
p
## [1] 0.2166667
#calculo de la varianza poblacional por la formula de varianza de la media muestral
xi= c(base_sida$sida)
varpobl=function(X){((1/length(X))*(sum(X)))-((mean(X))^2)}
varpobl(xi)
## [1] 0.1697222
#Comprobacion de la varianza VAR(X) = p(1 - p).
VARX=p*(1-p)
VARX
## [1] 0.1697222
#b. En Help I R language (standard) mirad la instrucción sample y tomad tres muestras de tamaño 30 sin reposición. Comprobad que las muestras son diferentes. ¿A qué se debe esto?
#Muestras de tamaño 30
muestra1=sample(base_sida$sida,30,replace = FALSE)
muestra1
## [1] 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0
muestra2=sample(base_sida$sida,30,replace = FALSE)
muestra2
## [1] 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0
muestra3=sample(base_sida$sida,30,replace = FALSE)
muestra3
## [1] 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
#Las muestras son diferentes debido al proceso aleatorio de la seleccion de las muestras
#c. Definid una función que calcule la proporción muestral de cada muestra. Supongamos que esta función se llama f.
f=function(x){mean(x)}
f1= f(muestra1)
f1
## [1] 0.1333333
f2= f(muestra2)
f2
## [1] 0.2333333
f3= f(muestra3)
f3
## [1] 0.2
#d. Ahora tomaremos 100 muestras y las guardaremos en un vector que se llamará, por ejemplo muestras. Para simplificar la escritura supondremos que hemos sacado del data.frame (es decir, definido a partir del data.frame) la variable con los 0 y 1 que indican si el paciente tiene o no el sida, y que esta variable se llama x.
muestras<-sample(base_sida$sida,size=n,replace=FALSE)
muestras
## [1] 0 1
X <- base_sida$sida
X
## [1] 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
## [38] 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
## [75] 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 1 0
## [112] 1 0 0 0 0 1 0 0 1
muestras=c(f(sample(X,30)))
muestras
## [1] 0.1333333
##Ahora definiremos un bucle (pruébalo primero con un n = 5 en lugar de 100)
#n=100
for(i in 1:100){muestras=c(muestras,f(sample(X,30)))}
muestras
## [1] 0.13333333 0.16666667 0.26666667 0.03333333 0.23333333 0.26666667
## [7] 0.23333333 0.20000000 0.23333333 0.26666667 0.26666667 0.30000000
## [13] 0.26666667 0.30000000 0.20000000 0.16666667 0.26666667 0.13333333
## [19] 0.13333333 0.13333333 0.16666667 0.23333333 0.16666667 0.26666667
## [25] 0.23333333 0.26666667 0.26666667 0.23333333 0.20000000 0.23333333
## [31] 0.10000000 0.36666667 0.13333333 0.23333333 0.20000000 0.16666667
## [37] 0.23333333 0.10000000 0.23333333 0.23333333 0.23333333 0.26666667
## [43] 0.23333333 0.13333333 0.13333333 0.36666667 0.23333333 0.03333333
## [49] 0.30000000 0.16666667 0.23333333 0.33333333 0.13333333 0.20000000
## [55] 0.26666667 0.20000000 0.20000000 0.20000000 0.20000000 0.26666667
## [61] 0.16666667 0.20000000 0.33333333 0.06666667 0.20000000 0.13333333
## [67] 0.20000000 0.16666667 0.16666667 0.16666667 0.13333333 0.30000000
## [73] 0.10000000 0.20000000 0.33333333 0.16666667 0.30000000 0.20000000
## [79] 0.26666667 0.16666667 0.20000000 0.10000000 0.26666667 0.20000000
## [85] 0.20000000 0.20000000 0.20000000 0.16666667 0.16666667 0.20000000
## [91] 0.23333333 0.23333333 0.30000000 0.20000000 0.13333333 0.16666667
## [97] 0.20000000 0.23333333 0.20000000 0.13333333 0.20000000
#e. Una vez tengáis el vector muestra, calculad la esperanza y la varianza de la proporción muestral #La Esperanza de la distribucion muestral de proporciones
esperanzamed=mean(muestras)
esperanzamed
## [1] 0.2069307
#La varianza de la proporcion muestral es
varianzamuestr=var(muestras)
varianzamuestr
## [1] 0.00429593
#mirad si se aplican (aproximadamente) las fórmulas para E[pest] y Var(pest) de los apuntes.
N=100
n=30
Var.total.muestras=((N-n)/((N-1)*n))*(p*(1-p))
Var.total.muestras
## [1] 0.004000187