6 votos

¿Cómo llevar a cabo un análisis factorial de datos cuestionario basados en 30 artículos en tres bloques?

Tengo un cuestionario con 30 preguntas divididas en 3 bloques de 10 preguntas. Cada pregunta se responde con un número de 1 a 10 y luego se calcula un promedio de todos ellos. Necesito saber cuánto cada bloque ha contribuido a la puntuación final (y si es posible - cuánto cada pregunta ha contribuido). ¿Cómo hago esto? Tengo acceso a R.

22voto

JMW.APRN Puntos 21

Creo que lo que usted necesita es el Análisis de Correspondencias Múltiple (ACM). Puede buscar los fundamentos en Wikipedia.

MCA es parte de la R-core, en el paquete de la MASA. Así que le sugiero que comience con

library(MASS)
?mca

Aquí está la página de ayuda de la función mca.

La salida de la MCA es un conjunto ordenado de factores de la captura de las relaciones entre las variables. La absoluta cargas del primer factor (es decir, las coordenadas de las proyecciones de las variables en el primer factor) dice que los grupos de las variables más fuertemente la influencia de la variación.

Como se señaló en los comentarios, MCA obras categórica y no las variables numéricas. Esto significa que la ordenada relación (1 < 2 < 3 < ... < 10) no serán tomadas en cuenta. Cómo bien MCA es apropiado depende de la naturaleza de sus preguntas. Por ejemplo, si se discretizan las variables numéricas (por ejemplo, mensual de ingresos / 1000, redondeando hacia arriba), entonces yo diría que la MCA es inapropiado. Si estas son evaluaciones subjetivas (por ejemplo, "¿cuánto te duele?") entonces yo le daría una oportunidad porque las categorías a veces puede ser bueno para mostrar no lineal de las relaciones entre las variables.

Para hacerlo en la práctica, en R, tendría que presentar los datos en un data.frame de 30 columnas y tantas filas como a los individuos. Cada columna serían las respuestas a una pregunta en la forma de un factor, lo que significa que un 9, dicen, podría ser interpretado como la categoría 9, no la puntuación de 9.

Dicen que han recogido esta en un data.frame que llame a answers se podría hacer lo siguiente:

mca_result <- mca(answers)
plot(mca_results)

Usted tendría un diagrama de dispersión biespacial en representación de los individuos, las respuestas a las preguntas (según categorías) y la relación entre todo esto expresado por la proximidad espacial. Dos personas cerca unos de otros en ese espacio dieron respuestas similares, dos respuestas cerca el uno del otro en ese espacio fueron elegidos por los mismos individuos. Del mismo modo, un individuo cerca de un grupo de respuestas ha escogido a muchos de ellos, y una respuesta cerca de un grupo de individuos fue elegido por muchos de ellos.

MCA no de forma nativa acomodar el diseño del bloque. Una vuelta que podría ser informativo, es la suma de los cuadrados de las saturaciones de las respuestas de cada bloque en el primer factor. La plaza de la carga se llama la inercia y dice cuánto de la variación de una variable (una respuesta a una pregunta) está representado en el modelo más simple que consta de sólo ese factor. En R se puede hacer de esta manera:

inertia_on_1 <- mca_results$cs[,1]^2
tapply(X=inertia_on_1, INDEX=rep(1:3, each=100), sum)

La parte que dice INDEX=rep(1:3, each=100) es construir un índice correspondiente a las variables de cada bloque (etiquetados como 1, 2, y 3) -- y hay 100 de cada uno (porque usted tiene 10 categorías para los 10 preguntas).

2voto

Ted Puntos 854

Un enfoque sería para calcular el primer componente principal en cada uno de los tres bloques, y, a continuación, realizar una regresión con su puntuación final como la variable de respuesta y los tres bloque de puntajes de las variables explicativas. A mí esto me parece una manera de responder a su pregunta de cuánto de cada bloque contribuye a la varianza en la puntuación final.

Usted podría hacer el mismo enfoque básico en la pregunta individual, mediante la omisión de los principales componentes de la parte.

Algunos muy escasa R código para hacer el Bloque de enfoque se pega a continuación. Así se omite todo tipo de cosas como el diagnóstico de cheques, el trazado de los datos, buscando ver qué parte de la varianza dentro de cada bloque el primer componente principal explica, etc.

También se advierte - incluso con completamente al azar de datos, uno de los bloques será más fuertemente vinculada a la puntuación final - usted necesita pensar cuidadosamente acerca de cómo interpretar eso!

# simulate random data
x <- matrix(sample(1:10, 3000, replace=TRUE), nrow=100)

# create score as you say it is calculated
score <- apply(x,1, mean) 

# estimate a score for the principal component of each block
BlockA <-predict(princomp(x[,1:10]))[,1]
BlockB <-predict(princomp(x[,11:20]))[,1]
BlockC <-predict(princomp(x[,21:30]))[,1]

# fit a model
summary(lm(score ~ BlockA + BlockB + BlockC))

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