1 votos

Prueba de Friedman para la pregunta de orden de rango - Comparación entre grupos

En mi estudio, los participantes clasificaron un total de 5 diseños (diferentes tipos de lámparas) en su orden de preferencia (favorito absoluto, segundo favorito, etc.). Los participantes clasificaron todas las lámparas, y las lámparas se presentaron en orden aleatorio a los participantes. Los participantes no podían dar la misma clasificación a dos lámparas. Ahora quiero evaluar si hay diferencias en las preferencias de los participantes. Mi segundo paso será comprobar si hay diferencias entre los participantes masculinos y femeninos.

Para responder a mi pregunta inicial, creo que es apropiado un Test de Friedman. Por lo que he entendido, Friedman transformaría mis datos en datos de rango (lo que ya es, ya que los participantes han indicado su orden de preferencia). Como se muestra en el código siguiente, el uso de los valores numéricos "en bruto" y de los valores numéricos "clasificados" (hecho manualmente por mí) produce los mismos resultados de la prueba de Friedman. Anteriormente cometí un error al crear la tabla clasificada, pero el código siguiente muestra que la comparación entre los valores brutos y los clasificados produce resultados idénticos.

Mi pregunta se centra ahora en la comparación entre dos grupos (por ejemplo, hombre/mujer) en su preferencia de lámparas (orden). Me gustaría saber si hay una diferencia significativa entre los grupos de participantes en su preferencia, pero no tengo idea de cómo abordar esto. Imagine que el grupo (por ejemplo, el género) es una columna adicional en el marco de datos.

He encontrado el test de Scheirer-Ray-Hare en Internet, aunque el test no parece ser aceptado universalmente. Muchas gracias de antemano por su tiempo.

--

# load data. Letters are lamp designs (columns), numbers are individual participants (rows)
y <- structure(c(3.88, 5.64, 5.76, 4.25, 5.91, 4.33, 30.58, 30.14, 
16.92, 23.19, 26.74, 10.91, 25.24, 33.52, 25.45, 18.85, 20.45, 
26.67, 4.44, 7.94, 4.04, 4.4, 4.23, 4.36, 29.41, 30.72, 32.92, 
28.23, 23.35, 12, 38.87, 33.12, 39.15, 28.06, 38.23, 26.65), .Dim = c(6L, 
6L), .Dimnames = list(c("1", "2", "3", "4", "5", "6"), c("A", 
"B", "C", "D", "E", "F")))

y_ranked <- structure(c(6, 6, 5, 6, 5, 6, 2, 4, 4, 3, 2, 4, 4, 1, 3, 4, 4, 
1, 5, 5, 6, 5, 6, 5, 3, 3, 2, 1, 3, 3, 1, 2, 1, 2, 1, 2), .Dim = c(6L, 
6L), .Dimnames = list(c("1", "2", "3", "4", "5", "6"), c("A", 
"B", "C", "D", "E", "F")))

friedman.test(y)
> Friedman chi-squared = 23.333, df = 5, p-value = 0.0002915

friedman.test(y_ranked)
> Friedman chi-squared = 23.333, df = 5, p-value = 0.0002915

0 votos

Su código no se ejecuta en una sesión limpia; es decir, su ejemplo NO es reproducible ( reproducible significa que si pego tu código entonces lo que veo es reproduce lo que se ve). R no viene con una función llamada freidmanTest . Sea cual sea el paquete del que provenga (¿scmamp? ¿PMCMRplus? ¿algo más?), intente leer la ayuda de esa función (que debería incluir ejemplos para que pueda seguirla). Sin embargo, R viene con una prueba llamada friedman.test y el ejemplo de la ayuda muestra las dos formas principales de llamarlo (las dos últimas líneas), cada una de las cuales coincide con la sintaxis de llamada dada en la parte superior del friedman.test ayuda

0 votos

Tener problemas para entender lo que estás haciendo y preguntar: Por favor, aclara: (1) ¿Las letras A, B, C, ... son los Grupos (diseños de lámparas) y los números 1, 2, 3, ... los Participantes? ¿Son 5 o 6 de cada uno? (2) ¿Puedes aclarar exactamente cómo has obtenido la matriz z de la matriz y ---con una fila o col como ejemplo para demostrar que es correcto? (3) ¿Conoces la diferencia entre friedman.test y friedmanTest ? ¿Su procedimiento de prueba espera que las columnas de la matriz sean Grupos o Participantes?

0 votos

@Glen_b Disculpas, he probado tanto base-R como PMCMRplus Friedman test, ahora he cambiado mi código de nuevo a base-R y debería ser reproducible. Perdón por el descuido de mi parte. Gracias por su tiempo.

1voto

Sal Mangiafico Puntos 26

Parece que la prueba de Friedman es un enfoque adecuado para responder a la primera pregunta. Y, sí, yo evitaría la prueba de Scheirer-Ray-Hare. Parece que no está bien considerada desde un punto de vista teórico, pero además, según mi experiencia, no encontrará un efecto de interacción significativo en casos en los que otras pruebas sí lo encontrarán. Para un modelo más complejo de lo que puede ser manejado por Friedman o Kruskal-Wallis, usted podría buscar un anova de transformación de rangos alineados (ART). El sitio web Software ARTool para R y Windows hace el proceso relativamente fácil, pero asegúrese de leer la documentación completa. Por ejemplo, todas las interacciones deben incluirse en el modelo, y el manejo de las comparaciones post-hoc de las interacciones puede ser complicado. El anova de ART es un método basado en rangos y permite modelos relativamente complejos que incluyen medidas repetidas. A continuación le he dado el código de un posible modelo. Hay algunos recursos para el ART en la parte inferior de esta página que tal vez quiera revisar. (Advertencia: soy el autor de esa página.) (En el momento de escribir este código R se ejecuta en rdrr.io ).

### Load data. Letters are lamp designs (columns), 
###  numbers are individual participants (rows)

y <- structure(c(3.88, 5.64, 5.76, 4.25, 5.91, 4.33, 30.58, 30.14, 
16.92, 23.19, 26.74, 10.91, 25.24, 33.52, 25.45, 18.85, 20.45, 
26.67, 4.44, 7.94, 4.04, 4.4, 4.23, 4.36, 29.41, 30.72, 32.92, 
28.23, 23.35, 12, 38.87, 33.12, 39.15, 28.06, 38.23, 26.65), .Dim = c(6L, 
6L), .Dimnames = list(c("1", "2", "3", "4", "5", "6"), c("A", 
"B", "C", "D", "E", "F")))

y

### Transform data to long format

Data = reshape(as.data.frame(y), varying = LETTERS[1:6], 
       timevar = "Lamp", v.names="Score",
       times = LETTERS[1:6], 
       direction = 'long')

Data$Gender[Data$id==1]="Female"
Data$Gender[Data$id==2]="Female"
Data$Gender[Data$id==3]="Female"
Data$Gender[Data$id==4]="Male"
Data$Gender[Data$id==5]="Male"
Data$Gender[Data$id==6]="Male"

Data$Lamp   = factor(Data$Lamp)
Data$Gender = factor(Data$Gender)
Data$id     = factor(Data$id)

Data

### ART anova

if(!require(ARTool)){install.packages("ARTool")}
library(ARTool)

model = art(Score ~ Lamp + Gender + Lamp:Gender,
                data = Data)

anova(model)

### Post-hoc comparisons
### Be sure to read documentation about this topic.

model.lm = artlm(model, "Lamp")

if(!require(emmeans)){install.packages("emmeans")}
library(emmeans)

marginal = emmeans(model.lm, ~ Lamp)

CLD(marginal, adjust = "tukey", Letters=letters)

0 votos

Esto es exactamente lo que estaba buscando, ¡muchas gracias! Se agradece mucho.

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