Comparar tres poblaciones
Iris.setosa <- c(5.1, 4.9, 4.7, 4.6, 5, 5.4, 4.6, 5, 4.4, 4.9,5.4, 4.8, 4.8, 4.3, 5.8)
Iris.versicolor <- c(7, 6.4, 6.9, 5.5, 6.5, 5.7, 6.3, 4.9, 6.6,5.2, 5, 5.9, 6, 6.1, 5.6)
Iris.virginica <- c(6.3, 5.8, 7.1, 6.3, 6.5, 7.6, 4.9, 7.3, 6.7,7.2, 6.5, 6.4, 6.8, 5.7, 5.8)
Sin embargo con los datos anterioes no se puede trabajar por lo tanto se realiza la union de los tres grupos en un solo vector añadiendo el nombre de las variables(factores)
longitud <- c(Iris.setosa, Iris.versicolor, Iris.virginica)#unión de los 3 vectores anterioes
especie <- rep(1:3, each = 15)#crear los 3 variable las cuales se repitan 15 veces
especie <- factor(especie, labels = c("Iris setosa", "Iris versicolor","Iris virginica"))#Agregar nombre de las 3 variables por cada vector
especie <- gl(3, 15, labels = c("Iris setosa", "Iris versicolor","Iris virginica"))#definir como factor para poder trabajarlos
split(longitud, especie)#Ver los vectores por variable
## $`Iris setosa`
## [1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9 5.4 4.8 4.8 4.3 5.8
##
## $`Iris versicolor`
## [1] 7.0 6.4 6.9 5.5 6.5 5.7 6.3 4.9 6.6 5.2 5.0 5.9 6.0 6.1 5.6
##
## $`Iris virginica`
## [1] 6.3 5.8 7.1 6.3 6.5 7.6 4.9 7.3 6.7 7.2 6.5 6.4 6.8 5.7 5.8
tapply(longitud, especie, summary)#Resumen
## $`Iris setosa`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.300 4.650 4.900 4.913 5.050 5.800
##
## $`Iris versicolor`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.900 5.550 6.000 5.973 6.450 7.000
##
## $`Iris virginica`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 4.90 6.05 6.50 6.46 6.95 7.60
plot(longitud ~ especie)#Gráfico de cajas(boxplot)
Asumiendo que la variable longitud sigue una distribución normal con varianza común para las tres poblaciones, el procedimiento es:
p.aov <- aov(longitud ~ especie)#comparación de la lonitud por especie(la especie es nuestro unico factor la cual tiene 3 niveles(Iris setosa,Iris versicolor y Iris virginica))
summary(p.aov)#resumen
## Df Sum Sq Mean Sq F value Pr(>F)
## especie 2 18.76 9.382 25.71 5.1e-08 ***
## Residuals 42 15.32 0.365
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
model.tables(p.aov)#ver el valor p por cada variable
## Tables of effects
##
## especie
## especie
## Iris setosa Iris versicolor Iris virginica
## -0.8689 0.1911 0.6778
model.tables(p.aov, type = "mean")#ver la media general y por variable
## Tables of means
## Grand mean
##
## 5.782222
##
## especie
## especie
## Iris setosa Iris versicolor Iris virginica
## 4.913 5.973 6.460
Otra posibilidad es definir el modelo lineal y obtener la tabla con la instrucci¶on anova.
g.lm <- lm(longitud ~ especie)#formula para comparación de la lonitud por especie
anova(g.lm)#mostrar anova
## Analysis of Variance Table
##
## Response: longitud
## Df Sum Sq Mean Sq F value Pr(>F)
## especie 2 18.763 9.3816 25.715 5.105e-08 ***
## Residuals 42 15.323 0.3648
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(g.lm)#mostrar el resumen
##
## Call:
## lm(formula = longitud ~ especie)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.56000 -0.31333 -0.01333 0.42667 1.14000
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 4.9133 0.1560 31.505 < 2e-16 ***
## especieIris versicolor 1.0600 0.2206 4.806 1.99e-05 ***
## especieIris virginica 1.5467 0.2206 7.013 1.39e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.604 on 42 degrees of freedom
## Multiple R-squared: 0.5505, Adjusted R-squared: 0.5291
## F-statistic: 25.72 on 2 and 42 DF, p-value: 5.105e-08
Por ambos procedimientos llegamos a los mismos resultados, sin embargo el modelo lineal contiene mayor información con el summary #Como el p-valor es muy pequeño se concluye que hay diferencias muy significativas entre las tres especie, es decir no son iguales entre sà Despues se puede obtenr el error cuadrático medio o estimación insesgada de la varianza del modelo
ECM <- deviance(p.aov)/p.aov$df.residual#ECM por el oav
summary(g.lm)$sigma^2#ECM por el metodo lineal
## [1] 0.3648254
Análisis de la varianza con un único factor tratamiento y cuatro niveles (P,A,B,AB).
P <- c(10, 0, 15, -20, 0, 15, -5, NA, NA, NA)#VECTOR A
A <- c(20, 25, 33, 25, 30, 18, 27, 0, 35, 20)#VECTOR B
B <- c(15, 10, 25, 30, 15, 35, 25, 22, 11, 25)#VECTOR C
AB <- c(10, 5, -5, 15, 20, 20, 0, 10, NA, NA)#VECTOR D
descenso <- c(P, A, B, AB)#Unión de vectores
tratam <- gl(4, 10, labels = c("placebo", "fármaco A", "fármaco B","asociación AB"))#agregar variables
#Suponiendo normalidad y homogeneidad de las varianzas, planteamos el test sobre la igualdad de medias.
#Un resumen numérico y gráfico se puede obtener con las instrucciones
mean(descenso, na.rm = TRUE)#media general, sin considerar NA
## [1] 15.31429
tapply(descenso, tratam, summary)#Resumen po cada fármaco
## $placebo
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -20.000 -2.500 0.000 2.143 12.500 15.000 3
##
## $`fármaco A`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 20.00 25.00 23.30 29.25 35.00
##
## $`fármaco B`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 10.0 15.0 23.5 21.3 25.0 35.0
##
## $`asociación AB`
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -5.000 3.750 10.000 9.375 16.250 20.000 2
stripchart(descenso ~ tratam, method = "stack")#gráficp
#El modelo lineal y la tabla del análisis de la varianza son
g.lm <- lm(descenso ~ tratam)
anova(g.lm)
## Analysis of Variance Table
##
## Response: descenso
## Df Sum Sq Mean Sq F value Pr(>F)
## tratam 3 2492.6 830.87 8.5262 0.0002823 ***
## Residuals 31 3020.9 97.45
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#El p-valor es inferior (0.0002823) al nivel de significación propuesto (0.01) de modo que rechazamos la hipótesis nula de igualdad de medias y admitimos que hay diferencias entre los fármacos.
#Para ver si hay diferencias entre los fármacos A y B calcularemos el intervalo de confianza para la diferencia de medias:
mediaA <- mean(descenso[tratam == "f¶armaco A"])#media del fármaco A
mediaB <- mean(descenso[tratam == "f¶armaco B"])#media del fármaco B
dif <- mediaA - mediaB#diferencia de medias entre farmaco A Y B
ee.dif <- summary(g.lm)$sigma * sqrt(1/10 + 1/10)
c(dif - qt(0.995, 31) * ee.dif, dif + qt(0.995, 31) * ee.dif)
## [1] NaN NaN
#Como este intervalo contiene al cero, podemos pensar que las diferencias entre A y B no son significativas. Aunque puede comprobarse que ambos fármacos difieren significativamente del placebo, cuando se realiza más de una comparación necesitamos un método de comparaciones múltiples (método de la diferencia significativa honesta de Tukey con la función TukeyHSD).
produc <- c(2.1, 2.2, 1.8, 2, 1.9, 2.2, 2.6, 2.7, 2.5, 2.8, 1.8,1.9, 1.6, 2, 1.9, 2.1, 2, 2.2, 2.4, 2.1)#Vector de producción
fert <- gl(4, 5)#vector de 4 fertilizantes las cuales cada una se repite 5 veces
finca <- factor(rep(1:5, 4))#crear una vector de 1 al 5 que se repita 4 veces, las cuales seran las filas para lo siguiente
xtabs(produc ~ finca + fert)#Crear una matriz 4 columnas por 5 filas
## fert
## finca 1 2 3 4
## 1 2.1 2.2 1.8 2.1
## 2 2.2 2.6 1.9 2.0
## 3 1.8 2.7 1.6 2.2
## 4 2.0 2.5 2.0 2.4
## 5 1.9 2.8 1.9 2.1
Ahora podemos generar un resumen de los datos y los gráficos
tapply(produc, fert, summary)#Resumen por variable(columna, fertilizante)
## $`1`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.8 1.9 2.0 2.0 2.1 2.2
##
## $`2`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.20 2.50 2.60 2.56 2.70 2.80
##
## $`3`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.60 1.80 1.90 1.84 1.90 2.00
##
## $`4`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.00 2.10 2.10 2.16 2.20 2.40
tapply(produc, finca, summary)#Resumen por variable(fila, finca)
## $`1`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.800 2.025 2.100 2.050 2.125 2.200
##
## $`2`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.900 1.975 2.100 2.175 2.300 2.600
##
## $`3`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.600 1.750 2.000 2.075 2.325 2.700
##
## $`4`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 2.000 2.000 2.200 2.225 2.425 2.500
##
## $`5`
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.900 1.900 2.000 2.175 2.275 2.800
stripchart(produc ~ fert, method = "stack")#Gráfico de fertilizantes
stripchart(produc ~ finca, method = "stack")#Gráfico de fincas
interaction.plot(fert, finca, produc, legend = F)#interacción por fincas
interaction.plot(finca, fert, produc, legend = F)#interacción por fertilizantes
A la vista de los gráficos, concluimos que no hay datos atÃpicos, asimetrÃas o heterocedasticidad. Tampoco parece haber interacciones.
Modelo lineal y tabla de varianza son:
g.lm <- lm(produc ~ finca + fert)#los 2 factores son: finca y fertilizante
anova(g.lm)#Tabla de Varianza, la cual muestra que con un grado de signifcancia de 0.05 unicamente hay diferencia significativa entre fertilizante(0.00031) la cual tiene el valor p<0.05, mientras que entre finca no hay diferencias ya que el valor p>0.05 al tener un valor de 0.6395
## Analysis of Variance Table
##
## Response: produc
## Df Sum Sq Mean Sq F value Pr(>F)
## finca 4 0.088 0.02200 0.6471 0.6395716
## fert 3 1.432 0.47733 14.0392 0.0003137 ***
## Residuals 12 0.408 0.03400
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Los efectos y las medias son:
p.aov <- aov(produc ~ finca + fert)
efectos <- model.tables(p.aov)
medias <- model.tables(p.aov, type = "means")
En este caso el modelo es balanceado, de forma que el diseño es ortogonal y el orden de los factores en la instrucción anova no es importante. En este sentido hay que señalar que la tabla ANOVA de R corresponde a un contraste secuencial de modelos: y ~ 1 y ~ finca y ~ finca + fert
huevos <- c(93, 94, 93, 90, 93, 86, 95.5, 83.5, 92, 92.5, 82,82.5, 92, 91, 90, 95, 84, 78, 83.3, 87.6, 81.9, 80.1, 79.6,49.4, 84, 84.4, 77, 67, 69.1, 88.4, 85.3, 89.4, 85.4, 87.4,52, 77)#Vector numerico
genotipo <- rep(rep(1:3, each = 6), 2)#primer factor en vector numerico llamado genotipo , que tiene tres grupos repetidos 6 veces y estos 3 grupos repetidos 2 veces
siembra <- rep(1:2, each = 18)#Segundo factor en vector numerico llamado siembra que tiene 2 grupos repetido 8 veces
genotipo <- factor(genotipo, labels = c("++", "+-", "--"))#Tercer factor la cual remplaza los caracteres genotipicas al primer vector numerico del mismo nombre
siembra <- factor(siembra, labels = c("100", "800"))#Segundo factor la cual es remplazada con los valores de siembra a emplear
El número de huevos eclosionados por casilla sigue la distribución binomial con n = 100 o n = 800. Para normalizar la muestra se aplica la transformación
y <- asin(sqrt(huevos/100))
y <- y * 180/pi
#de donde resulta la tabla:
split(round(y, 2), genotipo)
## $`++`
## [1] 74.66 75.82 74.66 71.57 74.66 68.03 65.88 69.38 64.82 63.51 63.15
## [12] 44.66
##
## $`+-`
## [1] 77.75 66.03 73.57 74.11 64.90 65.27 66.42 66.74 61.34 54.94 56.23
## [12] 70.09
##
## $`--`
## [1] 73.57 72.54 71.57 77.08 66.42 62.03 67.46 71.00 67.54 69.21 46.15
## [12] 61.34
Aunque no es absolutamente necesario, vamos a poner los datos en forma de data.frame o base de datos de R.
problema <- data.frame(y, siembra, genotipo)#union de vectores y convercion a data.frame
rm(y, siembra, genotipo)#Remover los 3 objetos despues de convertirlos en data.fram
attach(problema)
gráficos
boxplot(y ~ siembra)#Diagrama de cajas comparando el factor siembra (cuando las cajas no se sonbreponen hay diferencias significativas)
boxplot(y ~ genotipo)#Diagrama de cajas comparando el factor genotipo (cuando las cajas se sonbreponen no hay diferencias significativas)
plot.design(problema, fun = "mean")#diagrama que indica la media de los factores
plot.design(problema, fun = "median")#diagrama que indica la mediana de los factores
interaction.plot(genotipo, siembra, y)#Gráfico que muestra la interacción genotip x siembra (cuando las lineas no son paralelas hay diferencias significativas)
interaction.plot(siembra, genotipo, y)#Gráfico que muestra la interacción siembra x genotipo(cuando las lineas son casi paralelas hay diferencias significativas)
Tabla del análisis de la varianza
p.aov <- aov(y ~ siembra * genotipo, data = problema)
summary(p.aov)
## Df Sum Sq Mean Sq F value Pr(>F)
## siembra 1 662.1 662.1 14.833 0.000574 ***
## genotipo 2 7.7 3.8 0.086 0.917952
## siembra:genotipo 2 35.4 17.7 0.396 0.676456
## Residuals 30 1339.1 44.6
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
No es significativa la diferencia entre los genotipos ni la interacción, pero sà existen diferencias significativas sembrando 100 u 800 huevos, siendo el porcentaje de eclosiones mayor en el primer caso (al haber menos huevos, las larvas disponen de más alimento). Esto se alcanza a ver en los boxplot e interaccion.plot
medias <- model.tables(p.aov, type = "means")#presentación de las medias
medias$tables$siembra
## siembra
## 100 800
## 71.34575 62.76873
detach(problema)
produc <- c(12, 17, 24, 12, 18, 22, 14, 15, 15, 13, 20, 31, 20,14, 12, 18)#Datos
fila <- factor(rep(1:4, 4))#Crear 4 filas que repitan 4 veces
columna <- factor(rep(1:4, each = 4))#Crear 4 columnas que repitan 4 veces
variedad <- c("A", "C", "D", "B", "B", "D", "C", "A", "C", "A","B", "D", "D", "B", "A", "C")#Datos de las variables
problema <- data.frame(fila, columna, variedad, produc)#Unión de los 4 factores
rm(fila, columna, variedad, produc)#remover los primeros factores que presentan vectores y quedarnos con la union de estas que es con la que se va a trabajar
attach(problema)
matrix(problema$variedad, 4, 4)#agregar una matriz de 4x4 con las los variadades a trabajar para ver el diseño de cuadros latinos
## [,1] [,2] [,3] [,4]
## [1,] "A" "B" "C" "D"
## [2,] "C" "D" "A" "B"
## [3,] "D" "C" "B" "A"
## [4,] "B" "A" "D" "C"
La tabla del análisis de la varianza para este diseño es
p.aov <- aov(produc ~ fila + columna + variedad, data = problema)
summary(p.aov)
## Df Sum Sq Mean Sq F value Pr(>F)
## fila 3 18.69 6.23 0.527 0.6796
## columna 3 35.19 11.73 0.993 0.4574
## variedad 3 280.69 93.56 7.921 0.0165 *
## Residuals 6 70.88 11.81
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
graficos
boxplot(produc~fila)
boxplot(produc~columna)
boxplot(produc~variedad)
No hay diferencias signifÃcativas entre filas ni entre columnas. En cambio sà hay diferencias entre variedades.