1 votos

Conciliación del ANOVA unidireccional en MATLAB con los resultados de R

Estoy acostumbrado a trabajar en MATLAB pero quiero poder utilizar también R.

Actualmente, estoy tratando de ejecutar un ANOVA de una vía en R usando el siguiente ejemplo de MATLAB utilizando el conjunto de datos hogg mostrado aquí: https://mathworks.com/help/stats/one-way-anova.html

En MATLAB obtengo el valor p exacto pero cuando cargo los datos en R no me da el mismo valor p.

He hecho lo siguiente:

  1. Copie los datos en un archivo de Excel que contenga los datos así:

enter image description here

  1. Ejecuta el siguiente código:

    library(readxl)

    hogg <- read_excel("hogg.xlsx")

  2. Ejecuta el siguiente código:

    install.packages("car")

    library(car)

    fit2=aov(Values ~ Group, hogg)

    Anova(fit2, type="III")

Sin embargo, esto me da los siguientes resultados:

Response: Values
             Sum Sq Df F value    Pr(>F)    
(Intercept) 2185.46  1 50.8520 9.266e-08 ***
Group        156.82  1  **3.6489**    0.0664 .  
Residuals   1203.35 28  

Here, the correct answer should be "F = 9.01".

¿Alguien sabe cuál puede ser el problema?

0voto

manku Puntos 111

Como demostración, escribí (pero no corregí) sus datos. En R:

x1 = c(24,15,21,27,33,23)
x2 = c(14, 7,12,17,14,16)
x3 = c(11, 9, 7,13,12,12)
x4 = c( 7, 7, 4, 7,12,18)
x5 = c(19,24,19,15,10,20)
x = c(x1,x2,x3,x4,x5)
gp = as.factor(rep(1:5,each=6)) ## Notice, Warnung, Aviso

Así que su tabla de ANOVA debería ser (algo) así:

anova(lm(x~gp))
Analysis of Variance Table

Response: x
          Df Sum Sq Mean Sq F value    Pr(>F)    
gp         4 849.80 212.450   10.39 4.253e-05 ***
Residuals 25 511.17  20.447                      
---
Signif. codes:  
  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Nota: Esta es una forma rápida de comprobar el cálculo para el análisis de un ANOVA unidireccional equilibrado en una nueva implementación de software:

En un ANOVA unidireccional equilibrado, el MSE(Gp) y el MSE(Res) deberían ser el número de réplicas por la varianza de las medias de los grupos y la media de las varianzas de los grupos, respectivamente.

mse.gp = 
 6*var(c(mean(x1),mean(x2),mean(x3),mean(x4),mean(x5)));  
mse.gp
[1] 212.45
mse.res= 
 mean(c(var(x1),var(x2),var(x3),var(x4),var(x5))); 
mse.res
[1] 20.44667

Además, si no está seguro de que las varianzas sean iguales en cada grupo, puede utilizar oneway.test en R, que no requiere varianzas de grupo iguales (análogo a utilizar una prueba t de dos muestras de Welch en lugar de una prueba t de dos muestras agrupadas); los FD del denominador se reducen como una "corrección" para las medias desiguales de los grupos.

oneway.test(x ~ gp)

    One-way analysis of means 
    (not assuming equal variances)

data:  x and gp
F = 7.5998, num df = 4.000, denom df = 12.012,
 p-value = 0.002718

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