es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

R- Cómo realizar una prueba t de dos muestras con dos diseños de encuestas diferentes.

Quiero realizar una prueba t de dos muestras (Welch) sobre la igualdad de dos medias, una de las cuales se obtiene utilizando muestreo aleatorio simple (srsmean), y la otra que se calcula utilizando ponderación de encuestas con el paquete survey (mean_weighted). También realizo una prueba t entre mean_weighted y la media obtenida cuando se implementan tanto el ponderación como la estratificación en el diseño de la encuesta (mean_strat).

Sé que existe una función svyttest(), sin embargo, según puedo ver, esta función solo prueba las medias de dos muestras dentro de un diseño de encuesta, no las medias obtenidas con diseños de encuesta diferentes.

También intenté usar rnorm para crear muestras ficticias, por ejemplo, c(rnorm(9710, mean = 156958.8, sd = 364368)), pero el problema con este enfoque es que en métodos de muestreo complejos como la estratificación, el n efectivo suele ser menor que el n nominal, por lo que no estoy seguro de qué poner como n. Además, este método se siente un poco forzado, ya que estaría ajustando los datos a un tipo particular de distribución.

Finalmente, intenté escribir la ecuación para una estadística t yo mismo, sin embargo, al calcular el “error estándar de la diferencia de medias” que involucra un diseño de encuesta compleja, también me encuentro con problemas relacionados con el “tamaño de muestra efectivo”.

¿Existe otro enfoque que funcione tanto para la prueba t entre srsmean, mean_weighted, COMO para la prueba t entre mean_weighted y mean_strat?

library(survey)

wel <- c(68008.19, 128504.61, 21347.69,
33272.95, 61828.96, 32764.44,
92545.62, 58431.89, 95596.82,
117734.27)
rmul <- c(16, 16, 16, 16, 16, 16, 16,
20, 20, 20)
strat <- c(101, 101, 101, 101, 101, 102, 102, 102, 102, 102)

survey.data <- data.frame(wel, rmul, strat)

srsmean <- mean(survey.data$wel)

survey_weighted <- svydesign(data = survey.data,
ids = ~wel,
weights = ~rmul,
nest = TRUE)

mean_weighted <- svymean(~wel, survey_weighted)

survey_strat <- svydesign(data = survey.data,
ids= ~wel,
weights = ~rmul,
strata = ~strat,
nest = TRUE)
mean_strat <- svymean(~wel, survey_strat)

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para realizar una prueba t de dos muestras (t de Welch) sobre la igualdad de dos medias, una obtenida utilizando un muestreo aleatorio simple (srsmean) y la otra calculada utilizando ponderación de encuestas con el paquete de encuestas (mean_weighted), y también para realizar una prueba t entre mean_weighted y la media obtenida cuando tanto la ponderación como la estratificación están implementadas en el diseño de la encuesta (mean_strat), podemos seguir estos pasos:

    1. Utilizar la función svydesign() del paquete survey para crear el objeto de diseño de la encuesta para los datos ponderados (survey_weighted) y los datos estratificados y ponderados (survey_strat).
    2. Calcular la media de la muestra aleatoria simple utilizando la función mean() (srsmean).
    3. Calcular la media de la muestra ponderada utilizando la función svymean() (mean_weighted) en el objeto survey_weighted.
    4. Calcular la media de la muestra estratificada y ponderada utilizando la función svymean() (mean_strat) en el objeto survey_strat.
    5. Utilizar la función t.test() para realizar la prueba t de dos muestras entre srsmean y mean_weighted. Establecer el indicador var.equal = FALSE ya que estamos asumiendo varianzas desiguales. Toma en cuenta que t.test() asume que las varianzas son desiguales, por lo que se realizará automáticamente la prueba t de Welch.
    6. Utilizar la función t.test() para realizar la prueba t de dos muestras entre mean_weighted y mean_strat. Nuevamente, establecer var.equal = FALSE.

    Aquí tienes un ejemplo de código:

    “`{r}
    library(survey)

    crear un marco de datos para los datos de la encuesta

    wel <- c(68008.19, 128504.61, 21347.69,
    33272.95, 61828.96, 32764.44,
    92545.62, 58431.89, 95596.82,
    117734.27)
    rmul <- c(16, 16, 16, 16, 16, 16, 16, 20, 20, 20)
    strat <- c(101, 101, 101, 101, 101, 102, 102, 102, 102, 102)
    survey_data <- data.frame(wel, rmul, strat)

    crear los objetos de diseño de la encuesta

    survey_weighted <- svydesign(data = survey_data,
    ids = ~wel,
    weights = ~rmul,
    nest = TRUE)

    survey_strat <- svydesign(data = survey_data,
    ids = ~wel,
    weights = ~rmul,
    strata = ~strat,
    nest = TRUE)

    calcular las medias

    srsmean <- mean(survey_data$wel)

    mean_weighted <- svymean(~wel, survey_weighted)

    mean_strat <- svymean(~wel, survey_strat)

    realizar las pruebas t

    ttest1 <- t.test(srsmean, mean_weighted, var.equal = FALSE)

    ttest2 <- t.test(mean_weighted, mean_strat, var.equal = FALSE)
    “`

    Ten en cuenta que en el código anterior, asumimos que las poblaciones de las que se extrajeron las muestras siguen una distribución normal (o al menos son aproximadamente normales) y que las muestras son independientes entre sí. La función t.test() también asume varianzas iguales de forma predeterminada, por lo que necesitamos establecer var.equal = FALSE para realizar una prueba t de Welch.

    Además, ten en cuenta que los resultados de estas pruebas se aplican únicamente a las muestras y poblaciones específicas de las cuales se extrajeron y no se pueden generalizar a otras poblaciones.

Comments are closed.