Está en la página 1de 11

Análisis de muestras obtenidas mediante diseños complejos

mediante R y el “package” SURVEY


Documento 02. Análisis de datos muestrales

1. Introdución
Cuando los datos muestrales provienen de muestras que han sido extraı́das mediante un diseño muestral
complejo, es decir, que emplea estructuras con estratos y/o conglomerados, su tratamiento no puede realizarse
mediante los análisis clásicos de la Estadı́stica Matemática de Modelos. Este es el caso de muchas encuestas
realizadas mediante técnicas de muestreo en poblaciones finitas.
En R existe una librerı́a o “package” llamado SURVEY, que realiza estos procesos. Este paquete ha sido
elaborado por el Prof. Thomas Lumley. En una primera aproximación, puede consultarse

http://r-survey.r-forge.r-project.org/survey/index.html

para obtener información bastante completa sobre dicho “package”.


Para usarlo por primerı́sima vez emplearemos la opción Instalar “package”, seleccionaremos un sitio, bus-
caremos el “package” y lo importaremos a nuestra máquina. Seguidamente lo cargaremos o activaremos con
la instrucción

> library(survey)

y ya podremos usarlo. Recordemos algunos conceptos básicos relacionados con los diseños muestrales.

Diseño muestral complejo: Cuando se selecciona una muestra, empleando estratos y/o conglomerados, es
muy posible que lo primero que se selecciona no sean las unidades a estudiar sino unidades previas. Por
ejemplo, para estudiar pacientes de hospitales de Andalucı́a se puede extraer una muestra de hospitales,
y después en cada uno, una muestra de pacientes.
Los hospitales serı́an las unidades primarias y los pacientes las unidades finales. En este ejemplo hay
dos etapas pero puede haber más. Además, la selección de hospitales se puede hacer mediante muestreo
estratificado considerando como estratos las ocho provincias andaluzas. Esto es lo que se llama diseño
muestral complejo o muestreo complejo.

Pesos o ponderaciones muestrales: AL final del proceso de muestreo, un elemento de la población ha


entrado o no en la muestra dependiendo del azar, tiene pues una probabilidad de inclusión en la muestra
πi . Básicamente, el inverso de esta probabilidad es el peso. Veamos ejemplos.

1. Muestreo Aleatorio Simple: en la población, de tamaño N , seleccionamos n elementos. Entonces


πi = n/N , por lo que los pesos son N/n. Iguales para todos los elementos de la población.
2. Muestreo Aleatorio Simple Estratificado: en un estrato de tamaño Nh se extraen nh elementos, por
lo que un elemento del estrato tiene probabilidad de inclusión πi = nh /Nh , siendo pues el peso
Nh /nh , igual para todos los elementos de un estrato, pero posiblemente distintos de unos estratos
a otros.
3. Muestreo por conglomerados en dos etapas: g conglomerados se seleccionan de M existentes me-
diante Muestreo Aleatorio Simple. Acto seguido, en cada conglomerado de la muestra se seleccionan
ni elementos de lo Ni que tiene. Un elemento de ese conglomerado tiene pues la probabilidad de
inclusión πi = (g/M ) × (ni /Ni ), siendo su peso (M/g) × (Ni /ni ).

Observemos que esta es la definición básica de pesos asociados al muestreo. Es posible incorporar informa-
ción adicional de manera que dichos pesos pueden sufrir modificaciones con el fin de obtener estimaciones
más precisas. Esto se hace por ejemplo con el proceso de calibración, que describiremos más adelante.

1
Factor de corrección por población finita: teóricamente es la conocida cantidad

1 − n/N = 1 − f,

que aparece en numerosas expresiones matemáticas relacionadas con la estimación de la varianza. En el


contexto del “package” SURVEY, dicha cantidad se suministra, o bien introduciendo N , o introduciendo
n/N . Nótese que aquı́ N y n son los valores genéricos. En un muestreo estratificado serı́an Nh y nh para
cada estrato, y para un muestreo por conglomerados en una etapa serı́an M , el número de conglomerados,
y g el tamaño de la muestra de conglomerados.
Las dos formas de suministrar esta cantidad son entendidas por SURVEY. Si no se le indica de ninguna
forma, se sobreentiende que el muestreo en con reemplazamiento. Si hay dos etapas, se suministran los
factores de ambas etapas.

2. Primeros pasos con SURVEY


Vamos a comenzar la descripción de este “package” empleando un ejemplo simple, como es la muestra alea-
toria simple de 60 elementos obtenidos en SUGAR CANE, y cuyos datos están en el fichero sugar mas 60.txt.
Empezamos nuestra sesión activando SURVEY, que ya suponemos que ha sido importado a nuestra máquina,
y leyendo el citado fichero para incluir los datos en un dataframe que vamos a llamar muestra

> library(survey)
> muestra_sugar=read.table("sugar_mas_60.txt",header=TRUE)

El siguiente paso es crear la información relacionada con el diseño muestral, que más adelante será empleada
en las estimaciones. Esto se hace con la función svydesign() que tiene la forma general, no exhaustiva

svydesign(id=...,strata=...,fpc=...,data=...,weights=...)

siendo

id: Fórmula para indicar las variables que definen los conglomerados, desde el nivel más alto al más
bajo. Si no hay conglomerados se pone 1. Si hay varias variable se separan por +. Estas variable pueden
estar ya en los datos, pero pueden ser creadas sobre la marcha.
strata: strata: Fórmula para definir los posibles estratos. Si no hay estratos, se ignora esta especificación.
Usualmente, se hará a partir de una variable. Por ejemplo, si la variable ESTRATO define los estratos,
serı́a,

svydesign(..,strata=~ESTRATO...)

pero si por ejemple la muestra proviene de tres estratos, y los 20 primeros elementos son del A, los 30
siguientes del B y los 25 finales del C, se pondrı́a,

svydesign(..,strata=~c(rep("A",20),rep("B",30),rep("C",25)),....)

Aquı́ existen muchas posibilidades, por ejemplo, que los estratos están definidos por intervalos de valor
de una variable existente en los datos, sea auxiliar o no, etc.
fpc: Fórmula para definir el factor de corrección por población finita, tal como se ha indicado previa-
mente, es decir, o bien n/N o bien N . Puede estar en una variable, o se puede definir sobre la marcha,
como para los estratos. Nótese que se haga como se haga, el resultado ha de ser un vector de tantos
componentes como elementos en la muestra, n
data: Dataframe con los datos muestrales.
weights: Fórmula para definir los pesos. Pueden estar en una variable, o se pueden definir sobre la
marcha, como para los estratos y el factor de corrección por población finita, y como en estos casos, el
resultado ha de ser un vector de tantos componentes como elementos en la muestra, n.

2
NOTA INFORMATIVA: Para indicar determinadas estructuras, R emplea las fórmulas. Este tipo de objeto
aparece en muchos ámbitos, por ejemplo, cuando se analizan modelos, la estructura matemática del modelo
la proporcionamos mediante una fórmula, de manera que y∼x, indica el modelo y = α + β x + ε.
Como hemos visto, el “package”survey emplea este tipo de objeto para proporcionar la información sobre
conglomerados, estratos, pesos, etc. Las fórmula comienzan por el sı́mbolo ∼
Como veremos más adelante, cuando consideramos los estimadores de regresión y calibración, SURVEY
también emplea las fórmulas, ya sea para indicar las variables auxiliares que se consideran en el modelo, ya
sea para determinar qué variables auxiliares se van a emplear para calibrar. Indicamos algunos ejemplos

HARVEST∼AREA. Indica el modelo

HARVEST=β0 +β1 AREA+ε.

HARVEST∼AREA-1. Indica el modelo

HARVEST=β1 AREA+ε.

HARVEST∼AREA+RECEIPTS. Indica el modelo

HARVEST=β0 +β1 AREA+β2 RECEIPTS+ ε.

HARVEST∼AREA+RECEIPTS-1. Indica el modelo

HARVEST=β1 AREA+β2 RECEIPTS+ ε.

4
Siguiendo con nuestro análisis de la muestra de plantaciones de caña azucarera, observamos que no hay
conglomerados ni estratos, los pesos ya están en la variable PESOS, y el tamaño de la población en la variable
TAM, por lo que el diseño se definirı́a de la siguiente forma

> dise_sugar_mas=svydesign(id=~1,data=muestra_sugar,weight=~PESOS,fpc=~TAM)

Con esto, hemos definido un objeto, denominado dise sugar que contiene la información que será empleada
posteriormente para realizar las estimaciones. Si queremos ver un resumen del mismo, ejecutamos

> summary(dise_sugar_mas)

y si queremos extraer los pesos, ejecutamos,

> weights(dise_sugar_mas)

Notemos que si los pesos y/o los tamaños poblacionales no estuvieran ya en los datos muestrales como
variables de los mismos, siempre serı́a posible definirlos sobre la marcha modificando la instrucción svydesign
de la siguiente forma

dise_sugar_mas=svydesign(id=~1,data=muestra_sugar,weight=~rep(338/60,60),fpc=~rep(338,60))

2.1. Estimación de medias, totales, cuantiles y razones


Supongamos que ahora queremos estimar la media poblacional de la variable HARVEST. Empleamos la
función svymean() en la forma

> svymean(~HARVEST,dise_sugar_mas)

obteniendo,

3
mean SE
HARVEST 3710.1 216.05

donde mean indica la media estimada, y SE la desviación tı́pica estimada [“Standard Error”]. Nótese que SEno
es el error de muestreo, que se obtendrı́a multiplicando dicho valor por el cuantil correspondiente. Si queremos
obtener también el efecto del diseño, la instrucción serı́a

svymean(~HARVEST,dise_sugar_mas,deff=TRUE)

obteniendo,

mean SE DEff
HARVEST 3710.13 216.05 1

donde DEff es el efecto del diseño. Lógicamente aquı́ es uno ya que el muestreo es aleatorio simple sin reem-
plazamiento.
Nótese que si no indicamos el factor de corrección por población finita, el tratamiento de SURVEY es
equivalente a muestreo con reemplazamiento. Entonces, la estimación es la misma, pues sólo depende de los
pesos, pero la desviación tı́pica estimada aumenta. Veámoslo

> dise_sugar_mas_reemp=svydesign(id=~1,data=muestra_sugar,weight=~PESOS)
> svymean(~HARVEST,dise_sugar_mas_reemp,deff=TRUE)
mean SE DEff
HARVEST 3710.13 238.23 1.2158

siendo mayor que uno el efecto del diseño.


Si queremos estimar las medias de varias variables, las indicamos separadas por +, por ejemplo

> svymean(~HARVEST+RECEIPTS+COSTS,dise_sugar_mas,deff=T)

produce

mean SE DEff
HARVEST 3710.13 216.05 1
RECEIPTS 86039.70 5403.41 1
COSTS 56786.88 3564.00 1

Veamos ahora como extraer información de una estimación. Para ello, ubicamos el resultado en una variable
y ejecutamos una serie de instrucciones. Adjuntamos en bloque las instrucciones y los resultados, que son casi
autoexplicativos

> medias=svymean(~HARVEST+RECEIPTS+COSTS,dise_sugar_mas,deff=T)

> coef(medias)
HARVEST RECEIPTS COSTS
3710.133 86039.700 56786.883

# Una gráfica

> barplot(coef(medias))

> coef(medias)[1]
HARVEST
3710.133

# Podemos extraer valores para realizar operaciones con ellos: salidas


# formateadas, gráficos, etc.

4
> coef(medias)[[1]]
[1] 3710.133

> coef(medias)[[2]]
[1] 86039.7

# Extracción de las desviaciones tı́picas estimadas

> SE(medias)
HARVEST RECEIPTS COSTS
216.0543 5403.4117 3563.9953

> SE(medias)[[3]]
[1] 3563.995

# Intervalo de confianza. Por defecto al 95%

> confint(medias)
2.5 % 97.5 %
HARVEST 3286.675 4133.592
RECEIPTS 75449.208 96630.192
COSTS 49801.581 63772.186

> confint(medias)[[1]]
[1] 3286.675

> confint(medias,level=0.8)
10 % 90 %
HARVEST 3433.249 3987.018
RECEIPTS 79114.949 92964.451
COSTS 52219.440 61354.327

Si queremos estimar totales, empleamos la función svytotal(), para razones de medias [o totales], svy
ratio y para cuantiles, svyquantile. Por ejemplo

> svytotal(~HARVEST+RECEIPTS+COSTS,dise_sugar_mas,deff=T)
total SE DEff
HARVEST 1254025 73026 1
RECEIPTS 29081419 1826353 1
COSTS 19193967 1204630 1

> svyratio(~HARVEST+RECEIPTS,~AREA,dise_sugar_mas,deff=T)
Ratio estimator: svyratio.survey.design2(~HARVEST + RECEIPTS, ~AREA, dise_sugar_mas,
deff = T)
Ratios=
AREA
HARVEST 65.93839
RECEIPTS 1529.14159
SEs=
AREA
HARVEST 2.071092
RECEIPTS 55.076805

> svyquantile(~HARVEST+RECEIPTS,dise_sugar_mas,quantiles=c(0.5,0.75),ci=T)
$quantiles
0.5 0.75

5
HARVEST 3243 4699
RECEIPTS 71992 106339

$CIs
, , HARVEST
0.5 0.75
(lower 2830.421 4131.750
upper) 3833.501 5548.258

, , RECEIPTS
0.5 0.75
(lower 64195.75 93641.39
upper) 89189.99 131496.44

Finalmente indicamos que mediante la función svycontrast se pueden obtener estimaciones de funciones
lineales y no lineales de otros estadı́sticos como medias y totales. Véase ayuda sobre esta función.

2.2. Estimación de proporciones


Para estimar proporciones de variables cualitativas, se emplea svymean pero la variable ha de ser de tipo
factor, y si no lo es, es necesario hacer la conversión. Veamos un ejemplo simple. En la muestra hay una
variable, denominada REGION, con valores 1, 2, 3, 4, que indica la región a la que pertenece la plantación. Si
queremos estimar las proporciones de plantaciones que tiene cada región, harı́amos

> niv=c(1,2,3,4)
> nom=c("REG1","REG2","REG3","REG4")
> region_fac.=factor(muestra_sugar$REGION,levels=niv,labels=nom)
> svymean( ~region_fac.,dise_sugar_mas)

obteniendo,

mean SE
region_fac.REG1 0.35 0.0563
region_fac.REG2 0.15 0.0422
region_fac.REG3 0.15 0.0422
region_fac.REG4 0.35 0.0563

y para obtener intervalos de confianza, ya sabemos cómo

> svymean( ~region_fac.,dise_sugar_mas)-> zz


> confint(zz)
2.5 % 97.5 %
region_fac.REG1 0.23962345 0.4603766
region_fac.REG2 0.06736934 0.2326307
region_fac.REG3 0.06736934 0.2326307
region_fac.REG4 0.23962345 0.4603766

Observemos que los intervalos de confianza para proporciones basados en sumar y restar a la estimación el
error de muestreo, es decir, empleando el conocido como método de la cantidad pivotal, podrı́an dar lugar a
extremos inferiores menores que 0 y/o extremos superiores mayores que 1. Para evitar esta situación podemos
emplear la función svyciprop. Dicha función actúa sólo sobre variables binarias. Por ejemplo, si queremos un
intervalo de confianza al 95 % para la proporción de plantaciones cuya cosecha es mayor que 2000 y menor
que 7000, ejecutamos

> svyciprop( ~I(HARVEST>2000 & HARVEST<5000),dise_sugar_mas)

obteniendo

6
2.5% 97.5%
I(HARVEST > 2000 & HARVEST < 5000) 0.633 0.518 0.74

y si lo hicieramos con svymean

> svymean( ~I(HARVEST>2000 & HARVEST<5000),dise_sugar_mas)


mean SE
I(HARVEST > 2000 & HARVEST < 5000)FALSE 0.36667 0.0569
I(HARVEST > 2000 & HARVEST < 5000)TRUE 0.63333 0.0569
#es decir, la proporción y el ‘‘stardard error’’.
#Y para los intervalos de confianza basados en cantidad pivotal

>confint( svymean( ~I(HARVEST>2000 HARVEST<5000),dise_sugar_mas)->xxx


2.5 % 97.5 %
I(HARVEST > 2000 & HARVEST < 5000)FALSE 0.2551505 0.4781829
I(HARVEST > 2000 & HARVEST < 5000)TRUE 0.5218171 0.7448495

pudiendo observarse la diferencia.


Observemos que el Módulo de Muestras Complejas del programa estadı́stico SPSS tiene una opción similar
para estimar los intervalos de confianza de proporciones evitando que la estimación no pertenezca al intervalo
[0, 1].
NOTA INFORMATIVA: En las instrucciones anteriores hemos empleado la función I. Lo aclaramos. Esta
es la función indicadora, es decir, vale 1, o TRUE, si se cumple la condición entre paréntesis, y 0, ó FALSE si
no se cumple. Si se aplica a una expresión lógica que contiene una variable dará como resultado un vector de
TRUE y FALSE según cada componente de la variable cumpla o no la condición. Por ejemplo

> I(muestra_sugar$HARVEST > 2000 & muestra_sugar$HARVEST < 5000)


[1] TRUE TRUE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE FALSE TRUE
[17] TRUE TRUE TRUE TRUE FALSE TRUE TRUE FALSE TRUE FALSE TRUE TRUE TRUE FALSE FALSE FALSE
[33] TRUE FALSE TRUE TRUE TRUE FALSE TRUE FALSE FALSE TRUE FALSE TRUE TRUE TRUE TRUE TRUE
[49] FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE

Ası́, esta función es especialmente para crear “sobre la marcha” variables binarias que indiquen si se cumple
o no una determinada condición. Esto lo veremos más adelante en la estimación en subpoblaciones. 4
La función svyciprop tiene múltiples opciones para especificar la metodologı́a que ha de usar para construir
los intervalos. Véase ayuda para más información.

2.3. Estimación en subpoblaciones


Se puede realizar con la función svyby. Por ejemplo, si queremos estimar la cosecha [HARVEST] total y
el valor total [RECEIPTS] para cada región, definida por la variable REGION, ejecutamos,

> svyby(~HARVEST+RECEIPTS, ~REGION, dise_sugar_mas, svytotal)

obteniendo,

REGION HARVEST RECEIPTS se.HARVEST se.RECEIPTS


1 1 374351.9 7867874 66722.37 1395642
2 2 255122.4 6321439 75099.16 1859215
3 3 171850.5 4269103 60100.51 1497273
4 4 452700.3 10623002 86150.31 2057138

Si queremos estimar la cosecha mediana por region, obteniendo el “stardard error”, ejecutamos

> svyby(~HARVEST, ~REGION, dise_sugar_mas, svyquantile,quantiles=0.5,ci=TRUE)

7
obteniendo,

REGION HARVEST se
1 1 3134.0 224.5277
2 2 4529.0 558.2829
3 3 2551.0 686.0339
4 4 3137.5 538.3982

y para obtener intervalos de confianza al 95 % de dicho valor mediano, ejecutamos

> svyby(~HARVEST, ~REGION, dise_sugar_mas, svyquantile,quantiles=0.5,ci=TRUE,vartype="ci")

obteniendo,

REGION HARVEST ci_l ci_u


1 1 3134.0 2409.508 3289.640
2 2 4529.0 3619.126 5807.554
3 3 2551.0 1298.110 3987.313
4 4 3137.5 2502.440 4612.922

También podemos emplear la función I explicada anteriormente. Por ejemplo, si queremos estimar la media
de las variables HARVEST y COSTS en la subpoblación formada por las plantaciones con superficie mayor o
igual que 40 y menor o igual que 80, harı́amos

> svyby(~HARVEST+COSTS,~I(muestra_sugar$AREA>=40 & (muestra_sugar$AREA<=80)),dise_sugar_mas,svymean)


I(muestra_sugar$AREA >= 40 & (muestra_sugar$AREA <= 80)) HARVEST COSTS se.HARVEST se.COSTS
FALSE FALSE 3433.375 55976.33 437.3529 7650.128
TRUE TRUE 3894.639 57327.25 206.5806 3042.314

Véase que nos proporciona los resultados, tanto para los elementos que están en la subpoblación de in-
terés, como para los que no, es decir, para las dos modalidades, TRUE y FALSE, que toma la variable
I(muestra sugar$AREA>=40 & (muestra sugar$AREA<=80)).
Otra posibilidad consiste en emplear la función de R subset. Por ejemplo

> svymean(~HARVEST+COSTS,subset(dise_sugar_mas,AREA>=40 & AREA<=80 ))


mean SE
HARVEST 3894.6 206.58
COSTS 57327.2 3042.31

y otro ejemplo

svymean(~HARVEST+COSTS,subset(dise_sugar_mas,REGION==1))
mean SE
HARVEST 3164.4 242.61
COSTS 53659.7 4791.73

Como puede verse, los resultados que se van obteniendo son claros y autoexplicativos. Si quisiéramos
resultados más organizados, y tablas que reúnan resultados de varias instrucciones, siempre es posible extraer
las cantidades que nos interesen y estructurarlas a nuestro gusto mediante “scripts” apropiados. Para más
información sobre la estimación en subpoblaciones, consultar

http://r-survey.r-forge.r-project.org/survey/example-domain.html.

3. Diseño con estratos


Si la muestra ha sido obtenida a partir de un muestreo estratificado, la definición del diseño es similar
pero añadiendo la variable que define los mismos. Por ejemplo, vamos a emplear la muestra contenida en el
fichero sugar mase 60.txt descrita en el documento 01, siendo ESTRATO la variable que define los estratos.
Primero cargamos a un dataframe

8
muestra_sugar_est=read.table("sugar_mase_60.txt",header=TRUE)

y definimos el diseño

> dise_sugar_mase=svydesign(id=~1,strata=~ESTRATO,data=muestra_sugar_est,weight=~PESOS,fpc=~TAM)

Una vez hecho esto, la obtención de resultados es exactamente igual a como se ha descrito anteriormente.
Vemos algunos ejemplos

> svymean(~HARVEST+COSTS,dise_sugar_mase,deff=T)
mean SE DEff
HARVEST 4130.48 135.59 0.3012
COSTS 57668.70 2141.68 0.3255

> result=svymean(~HARVEST+COSTS,dise_sugar_mase,deff=T)
> confint(result)
2.5 % 97.5 %
HARVEST 3864.727 4396.241
COSTS 53471.090 61866.305

> svytotal(~HARVEST+COSTS,dise_sugar_mase,deff=T)
total SE DEff
HARVEST 1396104 45830 0.3012
COSTS 19492020 723886 0.3255

> svyratio(~HARVEST,~AREA,dise_sugar_mase,deff=T)
Ratio estimator: svyratio.survey.design2(~HARVEST, ~AREA, dise_sugar_mase, deff = T)
Ratios=
AREA
HARVEST 70.37229
SEs=
AREA
HARVEST 1.97866

> deff(svyratio(~HARVEST,~AREA,dise_sugar_mase,deff=T))
[1] 1.023905

> SE(svyratio(~HARVEST,~AREA,dise_sugar_mase,deff=T))
HARVEST/AREA
1.97866

> svyby(~HARVEST+RECEIPTS, ~REGION, dise_sugar_mase, svytotal)


REGION HARVEST RECEIPTS se.HARVEST se.RECEIPTS
1 1 298022.9 6110669 73090.43 1515029
2 2 202514.1 5225633 70345.04 1808893
3 3 475059.0 12556695 90486.72 2378086
4 4 420507.5 9910771 82161.95 1987590

> svyby(~HARVEST+RECEIPTS, ~ESTRATO, dise_sugar_mase, svytotal)


ESTRATO HARVEST RECEIPTS se.HARVEST se.RECEIPTS
1 1 317718.3 7424908 20352.15 445552.6
2 2 416432.7 10237822 20654.09 621703.4
3 3 661952.5 16141037 35491.09 1024569.5

9
4. Diseño con estratos y conglomerados
Una población se compone de 2000 familias, distribuidas en 3 distritos. Cada distrito está dividido en
secciones censales, 10, 15 y 20 respectivamente.
Mediante muestreo aleatorio simple se han seleccionado en cada distrito 2, 3 y 3 secciones censales . Dentro
de cada sección seleccionada se ha obtenido mediante muestreo aleatorio simple, una muestra de familias.
Para ellas se ha observado los ingresos familiares en EUROS y si la vivienda el la que habitan es en
propiedad, codificado como 1, o en alquiler, codificado como 2. Los datos obtenidos se encuentran en el fichero
famestcon.dat. Las 8 secciones muestreadas tienen los tamaños [no de familias] que se indican a continuación

-----------------------------
DISTRITO SECCIÓN no TAMA~
NO
-----------------------------
1 2 30
1 5 40
-----------------------------
2 3 20
2 10 20
2 12 40
-----------------------------
3 14 40
3 18 50
3 20 30
-----------------------------

Como se describió en el Documento 01, estos datos están ya en fichero de datos, en la variable tamsec
Definir el diseño muestral con svydesign y,
(a) Estimar los ingresos medios por familia y la proporción de familias con vivienda propia o en alquiler.
Realizar las estimaciones para la población completa y por distritos.
(b) Estimar los ingresos medios para las subpoblaciones FAMILIAS CON VIVIENDA PROPIA y FAMI-
LIAS CON VIVIENDA EN ALQUILER.
(c) Estimar el ingreso mediano construyendo un intervalo de confianza.

#Lectura de datos muestrales


> familias=read.table("famestcon.dat",header=TRUE)
#Seis primeros registros
> head(familias)
distrito seccion familia ingresos vivienda nsec tamsec tammufam tammusec
1 1 2 1 1200 2 10 30 5 2
2 1 2 2 1300 1 10 30 5 2
3 1 2 3 1500 2 10 30 5 2
4 1 2 4 1100 2 10 30 5 2
5 1 2 5 900 2 10 30 5 2
6 1 5 1 700 2 10 40 5 2

#Los pesos no están en el fichero. Los calculamos


#a partir de las variables. Pesos=Pesos1a Etapa*Pesos2a Etapa
> pesos=with(familias,nsec/tammusec*tamsec/tammufam)
> pesos
[1] 30.00000 30.00000 30.00000 30.00000 30.00000 40.00000 40.00000 40.00000 40.00000 40.00000
[11] 25.00000 25.00000 25.00000 25.00000 25.00000 25.00000 25.00000 25.00000 50.00000 50.00000
[21] 50.00000 50.00000 53.33333 53.33333 53.33333 53.33333 53.33333 66.66667 66.66667 66.66667
[31] 66.66667 66.66667 50.00000 50.00000 50.00000 50.00000

#Definición del dise~


no

10
> dise=svydesign(id=~seccion+familia,strata=~distrito,data=familias,fpc=~nsec+tamsec,weights=~pesos)

#Estimación de la media de ingresos


> svymean(~ingresos,dise,deff=T)
mean SE DEff
ingresos 2463.065 69.431 0.2018

#Intervalo de confianza
> svymean(~ingresos,dise,deff=T)->media
> confint(media)
2.5 % 97.5 %
ingresos 2326.982 2599.147

#Estimación de la proporción de familias con vivienda propia


> viv=factor(familias$vivienda,levels=c(1,2),labels=c("Con.Viv.Prop.","Sin.Viv.Prop."))
> svymean(~viv,dise)
mean SE
vivCon.Viv.Prop. 0.63118 0.0541
vivSin.Viv.Prop. 0.36882 0.0541

#Ingresos medios para familias con y sin vivienda propia


> svyby(~ingresos,~viv,dise,svymean)
viv ingresos se
Con.Viv.Prop. Con.Viv.Prop. 2959.625 81.26616
Sin.Viv.Prop. Sin.Viv.Prop. 1613.265 134.82492

#Ingresos medios por distritos


> svyby(~ingresos,~distrito,dise,svymean)
distrito ingresos se
1 1 1245.714 80.09002
2 2 2096.875 102.53477
3 3 3178.750 119.93963

#Otra forma de hacerlo


> svymean(~ingresos,subset(dise,distrito==1))
mean SE
ingresos 1245.7 39.184
> svymean(~ingresos,subset(dise,distrito==2))
mean SE
ingresos 2096.9 100.6
> svymean(~ingresos,subset(dise,distrito==3))
mean SE
ingresos 3178.8 115.39

Referencias y Bibliografı́a
[1] Chambers, R.L. and Dunstan, R. (1986). Estimating distribution functions from survey data. Biometrika.
73, 597-604.

[2] Lumley T. (2010). Complex Surveys. A Guide to Analysis Using R. Wiley.


[3] Särndal, C., Swensson, B. and Wretman, J. (1992). Model Assisted Survey Sampling. Springer-Verlag.
New York, Inc.

11

También podría gustarte