3 votos

Intervalos de confianza para tablas de frecuencias

Estoy analizando los resultados de una encuesta en R. El cuestionario es una serie de preguntas que los participantes responden utilizando una escala de Likert ( https://en.wikipedia.org/wiki/Likert_scale ).

He obtenido tablas de frecuencia para cada pregunta (es decir, qué porcentaje de participantes eligió "muy de acuerdo", qué porcentaje eligió "algo de acuerdo", etc.) y ahora me interesa obtener intervalos de confianza para esos porcentajes.

Como no quiero asumir que mis datos se distribuyen normalmente, estaba pensando en utilizar el bootstrap para obtener los intervalos de confianza. Sin embargo, no estoy del todo seguro de cómo funciona el bootstrapping en este contexto. Estoy familiarizado con el uso de bootstrapping cuando se trata de medias, pero no cuando se trata de tablas de frecuencia como éstas. En concreto, no estoy seguro de cómo codificar el bootstrapping.

Gracias, Lo mejor,

1voto

Sal Mangiafico Puntos 26

Existen diferentes métodos para calcular los intervalos de confianza de las proporciones sin utilizar el bootstrap.

Para una proporción multinomial, puede probar los métodos del DescTools paquete.

### Adapted from http://rcompanion.org/handbook/H_02.html

if(!require(DescTools)){install.packages("DescTools")}

library(DescTools)

SA = 10
A  = 9
N  = 20
D  = 5
SD = 1

observed = c(SA, A, N, D, SD)

MultinomCI(observed,
           conf.level=0.95,
           method="sisonglaz")

### Methods: "sisonglaz", "cplus1", "goodman"

   ###              est     lwr.ci    upr.ci
   ### [1,] 0.22222222 0.08888889 0.3807871
   ### [2,] 0.20000000 0.06666667 0.3585648
   ### [3,] 0.44444444 0.31111111 0.6030093
   ### [4,] 0.11111111 0.00000000 0.2696759
   ### [5,] 0.02222222 0.00000000 0.1807871

0voto

Caspar van Lissa Puntos 121

¿Está esto dentro de lo normal? Sé que mis datos simulados son terribles. Deberías ser capaz de calcular los intervalos de confianza a partir de los errores estándar proporcionados por la última línea de código, y puedes convertir estos resultados en una tabla de nuevo utilizando dcast.

data<-data.frame(x=factor(c(10,30,50,30)), y=factor(c(2,4,6,3)))

bootstrap.rows<-replicate(1000, {
  sample(nrow(data), nrow(data), replace = TRUE)
}, simplify=FALSE)

bootstrap.samples<-lapply(bootstrap.rows, function(rows){
  data[rows, ]
})

library(reshape2)
tables<-lapply(bootstrap.samples, function(x){
   melt(table(x))
  })

tables<-do.call(rbind, tables)

aggregate(tables$value, by=list(tables$x, tables$y), FUN=mean)
aggregate(tables$value, by=list(tables$x, tables$y), FUN=sd)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X