*! version 1.5.0 26aug2026

Titulo

svylet -- Test F de Wald global, comparaciones pareadas con
correccion de Bonferroni, y Compact Letter Display, para
svy: mean/total/proportion/ratio

Sintaxis

svylet
varname
[if] [in],
over(varname)
stat(statname)
[opciones]

donde statname es una de mean, total, proportion, o
ratio.

Principales
over(varname) variable que define los grupos a comparar;
requerida

stat(statname) estadistico a estimar y comparar:
mean, total, proportion, o ratio; requerida

level(#) categoria de varname a testear, cuando
stat(proportion); por defecto level(1). Se ignora (con aviso)
para mean, total, y ratio

denominator(varname) variable denominador, cuando
stat(ratio) -- varname (el argumento principal) es el
numerador. Requerida con stat(ratio), se ignora (con aviso) en
cualquier otro caso

alpha(#) nivel de significancia usado para las
comparaciones pareadas de Bonferroni y el Compact Letter Display; por
defecto alpha(0.05)

Vs-una-referencia (opcional)
ref(#) valor de over() a usar como categoria base
fija. Agrega k-1 contrastes de Wald con Bonferroni (cada otra
categoria contra ref()) junto al CLD de todos-contra-todos -- una
familia de hipotesis DISTINTA, no un reemplazo; ver
Comentarios

Bootstrap (opcional)
boot(#) numero de replicas bootstrap para un p-valor
prepivotado del test F global; por defecto boot(0), es decir, solo
el p-valor analitico

bseed(#) semilla pasada a set seed antes de correr
las replicas de boot(); si se omite, queda la semilla que Stata
ya tenia

varname debe ser numerica. Los pesos (fweight, pweight)
y las variables de diseno no se especifican en svylet mismo: el
dataset ya debe estar declarado con svyset antes de llamar a
svylet, igual que para svy:.

Descripcion

svylet apunta a cualquier encuesta compleja con diseno
multietapico, estratificado y por conglomerados, con factores de
expansion -- encuestas de presupuesto de hogares, de fuerza laboral,
demograficas y de salud, encuestas panel de hogares, y microdatos de uso
publico similares -- donde ya se usa svy: y hace falta un test de
significancia (segun el diseno) entre las categorias de una variable de
agrupacion (anios, olas, regiones, cohortes), no solo las estimaciones
puntuales que svy: ya reporta.

svylet responde la pregunta que svy: mean,
total, y proportion con over() dejan abierta: ¿son las
k estimaciones de grupo realmente distintas entre si, considerando
el diseno muestral? Corre el comando svy: correspondiente una sola
vez internamente, y luego:

1. testea la hipotesis nula global de que las k estimaciones
de grupo son todas iguales, con un test F de Wald con el ajuste de grados
de libertad de Korn & Graubard (1990) (el mismo ajuste que
test/testparm aplican por defecto despues de svy:);

2. testea cada comparacion pareada entre los k grupos, con
correccion de Bonferroni para las k(k-1)/2 comparaciones;

3. asigna un Compact Letter Display (CLD): los grupos que
comparten al menos una letra no son significativamente distintos entre
si a alpha(), despues de la correccion de Bonferroni.

Como svylet ya corrio svy: internamente, tambien expone las
estimaciones puntuales, errores estandar, limites de confianza, y
tamanos de muestra por grupo via return, asi que quien lo llama no
necesita correr el mismo comando svy: una segunda vez solo para
armar una tabla de puntos junto al test. Ver
Resultados guardados mas abajo, y ver
tsvy_es para un comando que usa exactamente esto para armar
una tabla completa (nacional/region/departamento, por anio) en una sola
pasada.

Opciones

Principales

over(varname) especifica la variable cuyas categorias definen los
grupos a comparar (por ejemplo, una variable de anio). Debe tener al
menos 2 valores distintos en la muestra de estimacion; svylet se
detiene con un error si no. varname debe ser NUMERICA --
svy: mean/total/proportion/ratio no aceptan un
over() string en absoluto (svylet chequea esto y se detiene
con un mensaje claro que nombra encode como solucion, en vez de
dejar que el svy: interno falle con su propio error menos
especifico). Si tiene un value label, svylet no lo usa para el test
en si (los
valores se muestran tal como los devuelve levelsof), asi que el
mapeo de un codigo crudo a una etiqueta legible, si hace falta, queda a
cargo de quien llama (ver la logica de years() en
tsvy_es para una forma de hacer esto sin depender de un
value label).

stat(statname) elige que comando svy: corre svylet
internamente: mean, total, proportion, o ratio
(agregado en la version 1.2). A diferencia de svy: mismo,
svylet acepta exactamente una variable de analisis por llamada (no
un varlist, y no una expresion num/den para ratio --
ver denominator() mas abajo), porque el test esta definido sobre
las categorias de over() para una sola cantidad medida. Para
testear varias variables, llame a svylet una vez por variable.

level(#) selecciona, solo para stat(proportion), a que
categoria de varname se refieren el test y las estimaciones
puntuales (el valor de "exito"). varname produce una fila de salida
en svy: proportion por cada valor distinto que toma; level(#)
le dice a svylet cual de esas filas llevar a traves del test. No
tiene efecto para mean, total, o ratio, y svylet
imprime un aviso si se fija en algo distinto de su valor por defecto
junto con cualquiera de esos.

denominator(varname) nombra la variable denominador, requerida
cuando stat(ratio) -- el argumento principal del comando,
varname, es el numerador. svylet arma internamente la
expresion num/den que svy: ratio espera; nunca hace falta
escribir la barra a mano. e(b)/e(V) de
svy: ratio ..., over() tienen la misma forma que mean/
total (una sola ecuacion, una columna por categoria de
over()), asi que el test, las comparaciones de Bonferroni, y el
Compact Letter Display funcionan exactamente igual para ratio que
para mean/total. Se ignora (con aviso) para cualquier otro
stat().

alpha(#) fija el nivel de significancia para las comparaciones
pareadas ajustadas por Bonferroni que alimentan el Compact Letter
Display. No afecta el p-valor del test F global en si, solo que grupos
terminan compartiendo letra.

Bootstrap

boot(#) pide un p-valor calibrado por bootstrap para el test F
global, ademas del analitico, usando el enfoque de prepivotado de Beran
(1988) adaptado para test de hipotesis por Hall & Wilson (1991): se
juntan los datos de todos los grupos de over(), se remuestrean
conglomerados (unidades primarias de muestreo, UPM) completos con
reemplazo dentro de su estrato original (bsample,
cluster() strata()), y luego se reasigna aleatoriamente cada
conglomerado remuestreado como bloque entero a un pseudo-grupo, en
las mismas proporciones (por numero de conglomerados) que los grupos
reales de over(), para que la hipotesis nula se cumpla por
construccion en cada replica. Ver Comentarios
para por que la reasignacion se hace por conglomerado completo y no por
observacion individual, y Referencias para
la bibliografia que lo respalda. boot(0), el default, se salta todo
esto y solo reporta el p-valor analitico.

boot() requiere que el svyset actual declare tanto una UPM
como un estrato (se prueban todos los nombres internos donde Stata
svy: puede guardarlos -- e(psu), e(psu1), e(su),
e(su1), y lo correspondiente para estrato); svylet se
detiene con un error claro, mostrando que contenia cada uno de esos
macros, si ninguno resuelve a una variable real.

bseed(#) pasa una semilla a set seed justo antes de correr
las replicas de boot(), para que los resultados sean reproducibles.
Si se omite, se usa tal cual la semilla en la que ya este el generador de
numeros aleatorios de Stata.

Comentarios y ejemplos

Los comentarios se presentan bajo los siguientes titulos:

El test F global y el ajuste Korn-Graubard

Pares de Bonferroni y el Compact Letter Display

ref(): comparar contra una base fija, no contra todos los pares

Varianza degenerada (proporciones exactamente 0 o 1)

Por que boot() remuestrea y reasigna por UPM completa

Lo que svylet deliberadamente no hace

El test F global y el ajuste Korn-Graubard

El test global es un test de Wald de H0: las k medias/totales/
proporciones de grupo son todas iguales, construido a partir de los
k-1 contrastes de cada grupo contra el primero. Esto es
matematicamente identico sin importar que grupo se use como
contraste de referencia -- cualquier conjunto de k-1 contrastes
independientes que genere el mismo subespacio da el mismo estadistico de
Wald, porque es una reparametrizacion lineal del mismo test. (Una version
anterior de svylet aceptaba una opcion refgroup() que
aparentaba dejar cambiar el grupo de referencia; se elimino en la version
1.1 una vez confirmada esta invarianza algebraicamente -- no habia nada
que implementar. Ver el registro de cambios al inicio de
svylet.ado.)

El propio test/testparm de Stata despues de un comando
svy: aplica, por defecto, el ajuste de grados de libertad de Korn &
Graubard (1990): con k-1 la dimension del test y d =
e(df_r) los grados de libertad de diseno,

F = [(d - (k-1) + 1) / ((k-1)*d)] * W con
F ~ F(k-1, d-(k-1)+1)

donde W es el estadistico de Wald crudo. svylet aplica el
mismo ajuste (confirmado comparando la salida de svylet contra
svy: regress + testparm sobre el mismo diseno y datos).

Pares de Bonferroni y el Compact Letter Display

Cada uno de los k(k-1)/2 pares de categorias de over() se
compara con un test t ajustado por diseno, y el p-valor crudo se
multiplica por el numero de pares (con tope en 1) -- la correccion de
Bonferroni estandar. Los grupos se asignan luego al menor numero de
letras tal que dos grupos comparten una letra si y solo si pertenecen a
algun subconjunto maximal de grupos que son todos no-significativos entre
si a alpha(). Esta es la misma logica que usa pwcompare, cld
y la salida clasica tipo "letter display" de los paquetes de ANOVA:
letras compartidas significan "no distinguibles aca", no "iguales".

ref(): comparar contra una base fija, no contra todos los pares

GRUPO/CLD y ref() responden dos preguntas DISTINTAS, y pueden
legitimamente no coincidir sobre el mismo dato -- ninguna de las dos esta
"mal" cuando eso pasa. Esto importa en la practica: al comparar las letras
CLD de tsvy contra un script de referencia que solo comparaba cada anio
contra el mas reciente, alrededor del 17% de las comparaciones anio-vs-2026
derivadas no coincidian, enteramente porque los dos procedimientos testean
familias de hipotesis distintas (ver el registro de cambios v1.5 de
tsvy.ado para el ejemplo completo).

GRUPO/CLD (el default, siempre se calcula) responde "cuales de estas
k categorias difieren entre SI" -- se comparan los k(k-1)/2
pares, y la correccion de Bonferroni multiplica cada p-valor crudo por
k(k-1)/2. ref(#) responde una pregunta mas chica y DISTINTA --
"cuales categorias difieren de ESTA UNICA categoria base" -- solo k-1
comparaciones estan en esa familia, asi que la correccion de Bonferroni
multiplica por k-1 en vez de k(k-1)/2. Una comparacion que
sobrevive Bonferroni con k-1 comparaciones puede no sobrevivirlo con
k(k-1)/2 (y, menos intuitivo pero igual de legitimo, tambien puede
pasar al reves, en cualquiera de las dos direcciones), porque las dos
correcciones controlan la tasa de error familiar sobre DOS familias de
hipotesis distintas, no la misma familia con distinto tamano de muestra.
Dunn (1961) es la referencia clasica para aplicar la desigualdad de
Bonferroni a problemas de comparaciones multiples, incluyendo comparar
varios grupos contra un control.

Las k-1 comparaciones que arma ref() comparten la misma
categoria base, asi que sus estadisticos de test estan correlacionados
entre si de una forma conocida -- un procedimiento de todos-los-pares (el
CLD de este mismo comando, el metodo de Tukey, o un Bonferroni simple
dividido entre k-1 comparaciones como hace ref()) no aprovecha
esa correlacion y por eso es mas conservador de lo necesario para esta
familia especifica. Dunnett (1955, 1964) derivo un procedimiento de un
solo paso para exactamente este diseno "varios tratamientos vs un
control" que usa la correlacion entre los k-1 contrastes para
obtener valores criticos mas ajustados (menos conservadores, con mas
potencia) sin dejar de controlar la tasa de error familiar al nivel
nominal; ver tambien Hsu (1996, capitulo 4) y Bretz, Hothorn & Westfall
(2010, capitulo 4) para tratamientos modernos y ejemplos resueltos (el
paquete multcomp de R de estos ultimos lo implementa como
contrMat(..., type="Dunnett")). ref() en este comando usa la
division simple de Bonferroni (Dunn 1961), no el valor critico de un solo
paso de Dunnett -- siempre es valido (Bonferroni nunca infla la tasa de
falsos positivos, sin importar la estructura de correlacion) pero algo
mas conservador que el de Dunnett para esta familia especifica de
comparaciones; implementar los valores criticos genuinos de Dunnett
requiere la distribucion t multivariada, no intentado aca. Ver
Referencias mas abajo.

Varianza degenerada (proporciones exactamente 0 o 1)

Un grupo con una proporcion de exactamente 0 o 1 -- comun en dominios
chicos -- tiene una varianza basada en diseno no definida o cero. En vez
de tratar eso en silencio como "sin diferencia" (una varianza faltante
comparada contra un numero se trata internamente como mas grande que
cualquier numero real, lo que de otro modo fusionaria ese grupo con
cualquier comparacion que corra al final), svylet marca esas
categorias explicitamente, les asigna la letra ?, y las excluye de
todo subconjunto candidato en el Compact Letter Display. Se imprime un
aviso nombrando las categorias afectadas (por su posicion dentro de
over(), no su valor crudo). Trate ? como "el test no se pudo
calcular aca", nunca como "sin diferencia".

El F omnibus solo excluye del contraste a las categorias degeneradas --
no queda missing solo porque UNA categoria de varias sea degenerada.
Mientras al menos 2 categorias tengan varianza definida y positiva, el F
omnibus y su p-valor se calculan sobre ese subconjunto (se imprime un
aviso indicando cuantas de las categorias de over() se usaron);
con menos de 2 categorias utilizables no queda nada que testear, asi que
r(F_omnibus)/r(p_omnibus) quedan missing. Los puntos
estimados y las comparaciones pareadas que no involucran una categoria
degenerada no se ven afectados de ninguna forma.

Por que boot() remuestrea y reasigna por UPM completa

El paso de reasignacion de boot() tiene que mover unidades
primarias de muestreo (conglomerados) completas, nunca observaciones
individuales, de su grupo original de over() a un pseudo-grupo.
Partir las observaciones de un conglomerado entre distintos pseudo-grupos
destruye la correlacion intra-conglomerado que el estimador de varianza
basado en diseno (y el estadistico F observado) asume al calcular
varianza, subestimando la variabilidad de la distribucion de referencia
nula del bootstrap e inflando la tasa de falsos positivos. Una simulacion
Monte Carlo bajo una hipotesis nula verdadera (10,000 datasets simulados,
199 replicas bootstrap cada uno) encontro que la reasignacion a nivel de
fila que usaba svylet 1.0 rechazaba una nula verdadera cerca del
9.3% de las veces a un nivel nominal del 5% -- casi el doble -- mientras
que la reasignacion a nivel de conglomerado que se usa desde la 1.1
rechazaba cerca del 3.2% de las veces (conservador, no inflado). Ver
AUDIT.md y sim/simulacion_bootstrap.py en el repositorio de
svylet para la simulacion completa y sus resultados, y
Referencias mas abajo para la bibliografia
que respalda por que el remuestreo y la reasignacion bajo un diseno
complejo tienen que preservar el conglomerado como la unidad de
intercambiabilidad.

Lo que svylet deliberadamente no hace

o svylet toma una variable de analisis a la vez, no un
varlist -- ver tsvy_es para hacer un loop de esto sobre
muchas variables y muchos niveles de agregacion a la vez.

o svylet no cruza over() con una segunda dimension de
agrupamiento en la misma llamada (por ejemplo, "por anio, por separado
dentro de cada region"); filtre los datos con if y llame a
svylet de nuevo para cada region, o use tsvy_es, que
hace exactamente eso internamente.

o el resultado del test F global no depende de, ni puede
cambiarse, segun que categoria de over() se trate como referencia
(ver arriba).

Ejemplos

El . inicial antes de cada linea de abajo es el prompt de comando,
mostrado aca solo porque es la convencion estandar de los help files de
Stata -- no es parte del comando. Copiar un ejemplo de una sola linea
con el . incluido funciona bien (el ejecutor de do-files de Stata
lo tolera), pero copiar un bloque foreach/forvalues de varias
lineas con un . en cada linea, incluido el cuerpo y la llave de
cierre, rompe el parseo del bloque en Stata. Al copiar un ejemplo de
loop a un do-file, saque el . inicial primero.

Preparacion: un diseno donde cada observacion es su propia UPM (sin
conglomerados reales en auto.dta, esto alcanza solo para la ruta
analitica)

. sysuse auto, clear

. gen long psu_id = _n

. svyset psu_id

proportion: ¿es distinta la participacion de autos importados
entre categorias de estado de reparacion?

. svylet foreign, over(rep78) stat(proportion) level(1)

mean: ¿difiere el promedio de millas por galon entre
categorias de estado de reparacion?

. svylet mpg, over(rep78) stat(mean)

total: ¿difiere el peso total de los vehiculos entre
categorias de estado de reparacion?

. svylet weight, over(rep78) stat(total)

ratio: ¿difiere la razon baul/largo entre categorias de
estado de reparacion? denominator() es una opcion aparte, no una
expresion num/den escrita en el argumento principal

. svylet trunk, over(rep78) stat(ratio) denominator(length)

over() debe ser numerica -- si la variable de agrupacion que
tiene es STRING (por ejemplo origin, con texto "Domestic"/
"Foreign"), pasela primero por encode y use la variable numerica
resultante:

. decode foreign, generate(origin)

. encode origin, generate(origin_num)

. svylet mpg, over(origin_num) stat(mean)

Con un p-valor calibrado por bootstrap (necesita un diseno con UPM
y estratos reales; industry/south en nlsw88.dta se usan
aca solo para tener conglomerados con varias filas y demostrar el
mecanismo, no como un diseno de encuesta real):

. sysuse nlsw88, clear

. svyset industry, strata(south) singleunit(certainty)

. svylet wage, over(race) stat(mean) boot(200) bseed(20260824)

Un nivel de significancia mas laxo amplia que grupos terminan
compartiendo letra (menos grupos terminan "significativamente
distintos"), sin cambiar el test F global en si, solo las comparaciones
pareadas detras de GRUPO:

. svylet mpg, over(rep78) stat(mean) alpha(0.10)

ref(): compara cada categoria de rep78 contra UNA sola
base fija (aca, 5 = "Excelente") en vez de todos los pares -- k-1
contrastes ajustados por Bonferroni (Dunn 1961), una familia de
hipotesis DISTINTA del CLD de todos los pares de arriba (ver
Comentarios). Este es el patron para "cada
grupo, ¿cambio respecto a una categoria/anio de referencia?", la
pregunta que responde refyear() de tsvy_es a traves del
tiempo -- ver su help para un ejemplo resuelto con anios:

. svylet mpg, over(rep78) stat(mean) ref(5)

. return list

. matrix list r(p_vsref)

Leyendo el p-valor vs-base por categoria de forma programatica
(missing en la posicion de r(ref_idx) misma, y en todo el vector
si no se especifico ref()):

. forvalues i = 1/`r(k_categorias)' {

. if `i'' != `r(ref_idx)'' di "rep78 = " `r(nombre_categoria_`i'')' ///

. " p vs base = " el(r(p_vsref), `i'', 1)

. }

Leyendo los resultados despues de que corre el comando -- los
escalares y matrices de Resultados guardados
arriba:

. svylet mpg, over(rep78) stat(mean)

. return list

. matrix list r(b)

Leyendo las letras y estimaciones por categoria programaticamente,
una categoria a la vez (este es exactamente el patron que usa
tsvy_es internamente para armar una tabla fila por
fila):

. forvalues i = 1/`r(k_categorias)' {

. di "rep78 = " `r(nombre_categoria_`i'')' ///

. " estimacion = " el(r(b), `i'', 1) ///

. " letra = " `r(letra_`i'')'

. }

Resultados guardados

svylet guarda lo siguiente en r():

Escalares

r(F_omnibus) estadistico F de Wald global (ajustado por
Korn-Graubard); missing si no se puede calcular (ver
r(k_categorias) mas abajo)

r(p_omnibus) p-valor analitico del test F global

r(p_omnibus_boot) p-valor calibrado por bootstrap; missing
salvo que se haya especificado boot() y al menos una replica haya
tenido exito

r(B_efectivo) numero de replicas de boot() que
terminaron sin error; missing si no se especifico boot()

r(df_num) grados de libertad del numerador del test global
(k-1)

r(df_den) grados de libertad del denominador del test
global (ajustados por Korn-Graubard)

r(df_raw) grados de libertad de diseno de e(df_r),
sin ajustar -- use este, no r(df_den), si arma un intervalo de
confianza tipo t ordinario a mano

r(k_categorias) numero de categorias de over()
testeadas (k)

r(ref_idx) posicion (1,...,k) de ref() dentro de
las categorias de over(); 0 si no se especifico ref()

Macros

r(letra_i) codigo del Compact Letter Display
para la i-esima categoria de over() (? si esa categoria
tuvo varianza degenerada), i = 1,...,k

r(nombre_categoria_i) valor de over() al
que corresponde la i-esima categoria, i = 1,...,k

Matrices

r(b) k x 1: estimacion puntual para cada categoria de
over(), en el mismo orden que
r(nombre_categoria_i)

r(V) k x k: matriz de varianzas-covarianzas
basada en diseno de r(b)

r(n_ponderado) k x 1: tamano de muestra ponderado
(e(_N_subp)) por categoria

r(n_sin_ponderar) k x 1: tamano de muestra sin
ponderar (e(_N)) por categoria

r(ci_lower) k x 1: limite inferior de confianza por
categoria, leido directo de r(table) de la llamada svy:
subyacente (en la escala logit-transformada que Stata mismo usa para
proportion, no reconstruido a mano)

r(ci_upper) k x 1: limite superior de confianza por
categoria, misma fuente que r(ci_lower)

r(p_vsref) k x 1: p-valor ajustado por Bonferroni
(k-1 comparaciones) de cada categoria contra la categoria de
ref(); missing en todas si no se especifico ref(), y en la
posicion de r(ref_idx) siempre (una categoria no se testea contra
si misma)

r(p_vsref_raw) k x 1: las mismas comparaciones,
p-valor crudo (sin ajustar) -- para uso de auditoria/diagnostico; aplique
su propia correccion si el Bonferroni simple de r(p_vsref) no es lo
que necesita

r(b), r(V), r(n_ponderado), r(n_sin_ponderar),
r(ci_lower), y r(ci_upper) le permiten a quien llama armar
una tabla completa de puntos (estimacion, error estandar via
sqrt(diag(r(V))), intervalo de confianza, tamanos de muestra) sin
correr el comando svy: subyacente una segunda vez. tsvy_es
esta construido enteramente sobre estos returns.

Referencias

Beran, R. 1988.
Prepivoting test statistics: A bootstrap view of asymptotic refinements.
Journal of the American Statistical Association 83(403): 687-697.

Bretz, F., T. Hothorn, y P. Westfall. 2010.
Multiple Comparisons Using R. Boca Raton, FL: CRC Press.

Canty, A. J., y A. C. Davison. 1999.
Resampling-based variance estimation for labour force surveys.
The Statistician 48(3): 379-391.

Davison, A. C., y D. V. Hinkley. 1997.
Bootstrap Methods and Their Application. Cambridge University Press.

Dunn, O. J. 1961.
Multiple comparisons among means.
Journal of the American Statistical Association 56(293): 52-64.

Dunnett, C. W. 1955.
A multiple comparison procedure for comparing several treatments with a
control.
Journal of the American Statistical Association 50(272): 1096-1121.

Dunnett, C. W. 1964.
New tables for multiple comparisons with a control.
Biometrics 20(3): 482-491.

Field, C. A., y A. H. Welsh. 2007.
Bootstrapping clustered data.
Journal of the Royal Statistical Society, Series B 69(3): 369-390.

Hall, P., y S. R. Wilson. 1991.
Two guidelines for bootstrap hypothesis testing.
Biometrics 47(2): 757-762.

Hsu, J. C. 1996.
Multiple Comparisons: Theory and Methods. Boca Raton, FL: Chapman &
Hall/CRC.

Korn, E. L., y B. I. Graubard. 1990.
Simultaneous testing of regression coefficients with complex survey data:
Use of Bonferroni t statistics.
The American Statistician 44(4): 270-276.

Rao, J. N. K., y C. F. J. Wu. 1988.
Resampling inference with complex survey data.
Journal of the American Statistical Association 83(401): 231-241.

Rust, K. F., y J. N. K. Rao. 1996.
Variance estimation for complex surveys using replication techniques.
Statistical Methods in Medical Research 5(3): 283-310.

Wolter, K. M. 2007.
Introduction to Variance Estimation. 2nd ed. Springer.

Autor

Andres Talavera Cuya. La afiliacion se indica solo para fines de
identificacion -- este software no es un producto oficial de INEI y INEI
no es responsable por el. Desarrollado independientemente por el autor;
las opiniones, metodos, y resultados son propios del autor y no reflejan
necesariamente la posicion de INEI. Distribuido bajo la licencia GNU
General Public License v3
(https://www.gnu.org/licenses/gpl-3.0.txt).

Codigo fuente, instrucciones de instalacion, y el comando companero
tsvy:
https://github.com/atalaveracuya/svylet. Todavia no es un
paquete de SSC; descargue svylet.ado y este help en un directorio
de su adopath (o clone el repositorio y agreguelo con
adopath ++ <ruta>).

Cita sugerida: Talavera Cuya, A. 2026. svylet: modulo de Stata para
testear la igualdad de medias, totales, proporciones, y razones
ponderadas por diseno muestral entre grupos. Disponible en
https://github.com/atalaveracuya/svylet.

Vea tambien

En linea: tsvy_es, svy, svy postestimation,
mean, total, proportion, test,
testparm, pwcompare, bsample

In English: svylet