Está en la página 1de 12

Por: Mario Orlando Suárez Ibujés Fecha: 31/01/2024 https://orcid.

org/0000-0002-3962-5433

MANOVA Y ANOVA CON R STUDIO


TABLA DE CONTENIDOS
1. INSTRUCCIONES ............................................................................................................................................................ 1
2. CARGA DE LA BASE DE DATOS ...................................................................................................................................... 2
3. VISUALIZACIÓN DE LOS DATOS ..................................................................................................................................... 3
4. MANOVA ....................................................................................................................................................................... 6
5. ANOVA .......................................................................................................................................................................... 7
6. CORRELACIÓN ............................................................................................................................................................... 7
7. NORMALIDAD................................................................................................................................................................ 8
8. IGUALDAD DE VARIANZAS UNIVARIANTE ..................................................................................................................... 8
9. PRUEBA DE DIXON ........................................................................................................................................................ 9
10. OUTLIERS MULTIVARIADOS ........................................................................................................................................ 9
11. INTERVALOS SIMULTANEOS MANOVA ..................................................................................................................... 11
12. INCLUSIÓN DE VARIABLES DE BLOQUEO LOCALIDADES. .......................................................................................... 12

1. INSTRUCCIONES
Utilizamos el archivo karo.xlsx obtenido de koro.sav que contiene El diseño es un ensayo clínico doble ciego
de estas tres terapias experimentales junto con un grupo de control cuyo propósito de este estudio fue
examinar la eficacia de tres terapias experimentales para mejorar los síntomas de koro. Para obtener la base
de datos se utilizaron tres instrumentos estándar para evaluar el resultado. Estos instrumentos son el Índice
de Síntomas para la Evaluación de Koro (SIKE), el Inventario de Funcionamiento Social para el Trastorno de
Koro (SFKDI) y la Escala de Ajuste Ocupacional (OAS). Las tres medidas se dieron en dos momentos. El primer
punto de tiempo, denominado prueba previa en este documento, fue cuando los pacientes ingresaron a la
clínica y antes de la asignación a uno de los cuatro tratamientos. El segundo punto de tiempo, la prueba
posterior, ocurrió exactamente dos semanas después del inicio del tratamiento.
La intención es aplicar MANOVA para ver resultados una vez aplicado el tratamiento. Para lo cual se creará
y1 y y2, y se considerá como factor a therapy, siendo:
Y1: sf_post-sf_pre sf_post = Inventario de funcionamiento social para el trastorno de Koro: prueba posterior
sf_pre = Inventario de funcionamiento social para el trastorno de Koro: prueba previa
Y2: oa_post-oa_pre oa_post= Escala de Ajuste Ocupacional: Postest oa_pre=Escala de Ajuste Ocupacional:
Pretest
Factor: therapy (terapia)
therapy = terapia
Por: Mario Orlando Suárez Ibujés Fecha: 31/01/2024 https://orcid.org/0000-0002-3962-5433

2. CARGA DE LA BASE DE DATOS


library(haven)
library(tidyverse)

## -- Attaching packages --------------------------------------- tidyverse 1.3.2 --


## v ggplot2 3.4.0 v purrr 0.3.5
## v tibble 3.1.8 v dplyr 1.0.10
## v tidyr 1.2.1 v stringr 1.4.1
## v readr 2.1.3 v forcats 0.5.2
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()

library(foreign)
library(cluster)
library(readxl)
library(ggplot2)
library(mvShapiroTest)
library(biotools)

## Loading required package: MASS


##
## Attaching package: 'MASS'
##
## The following object is masked from 'package:dplyr':
##
## select
##
## ---
## biotools version 4.2

library(outliers)
library(ICSNP)

## Loading required package: mvtnorm


## Loading required package: ICS

library(tidyverse)

# CARGA DE LA BASE DE DATOS

karo <- read_excel("karo.xlsx")


str(karo)

## tibble [40 x 11] (S3: tbl_df/tbl/data.frame)


## $ subject : num [1:40] 1 2 3 4 5 6 7 8 9 10 ...
## $ group : num [1:40] 1 1 1 1 1 1 1 1 1 1 ...
## $ therapy : chr [1:40] "Control" "Control" "Control" "Control" ...
## $ si_pre : num [1:40] 48 52 55 50 49 44 52 41 60 61 ...
## $ sf_pre : num [1:40] 68 46 50 43 76 59 40 36 40 53 ...
## $ oa_pre : num [1:40] 70 44 52 41 60 43 41 39 41 57 ...
## $ si_post : num [1:40] 72 55 56 48 54 46 52 43 58 56 ...
## $ sf_post : num [1:40] 74 61 51 45 60 62 35 38 46 49 ...
## $ oa_post : num [1:40] 82 52 58 54 61 47 53 40 40 44 ...
## $ y1_sfpost_menos_sfpre: num [1:40] 6 15 1 2 -16 3 -5 2 6 -4 ...
## $ y2_oapost_menos_oapre: num [1:40] 12 8 6 13 1 4 12 1 -1 -13 ...

view(karo)
Por: Mario Orlando Suárez Ibujés Fecha: 31/01/2024 https://orcid.org/0000-0002-3962-5433

3. VISUALIZACIÓN DE LOS DATOS


# Para el análisis se realizan las gráficas para y1 y y2 y un
# gráfico de dispersión que muestre la relación de las dos:
ggplot(data=karo, aes(therapy,y1_sfpost_menos_sfpre)) + geom_point() +
ggtitle("Comportamiento y1") + xlab("therapy") + ylab("karo")

ggplot(data=karo, aes(therapy,y2_oapost_menos_oapre)) + geom_point() +


ggtitle("Comportamiento y2") + xlab("therapy") + ylab("karo")
Por: Mario Orlando Suárez Ibujés Fecha: 31/01/2024 https://orcid.org/0000-0002-3962-5433

ggplot(data=karo, aes(y1_sfpost_menos_sfpre,y2_oapost_menos_oapre, color=therapy)) +


geom_point() + ggtitle("Comportamiento y1 vs y2")
Por: Mario Orlando Suárez Ibujés Fecha: 31/01/2024 https://orcid.org/0000-0002-3962-5433

require(ggplot2)
ggplot(karo, aes(y1_sfpost_menos_sfpre, y2_oapost_menos_oapre, color=therapy)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE)

## `geom_smooth()` using formula = 'y ~ x'


Por: Mario Orlando Suárez Ibujés Fecha: 31/01/2024 https://orcid.org/0000-0002-3962-5433

# Parece que los tratamientos Abreaction, Behavioral, Cognitive y Control


# muestran resultados dispersos en y1 y y2.

4. MANOVA
# Se procede a realizar el análisis MANOVA y se presenta un resumen del mismo
#con la hipotesis con el test de Wilks

MN=manova(cbind(karo$y1_sfpost_menos_sfpre,karo$y2_oapost_menos_oapre) ~ karo$therapy)
MN

## Call:
## manova(cbind(karo$y1_sfpost_menos_sfpre, karo$y2_oapost_menos_oapre) ~
## karo$therapy)
##
## Terms:
## karo$therapy Residuals
## resp 1 1874.6 2983.0
## resp 2 293.6 1914.0
## Deg. of Freedom 3 36
##
## Residual standard errors: 9.102808 7.291548
## Estimated effects may be unbalanced

summary(MN,test="Wilks")
Por: Mario Orlando Suárez Ibujés Fecha: 31/01/2024 https://orcid.org/0000-0002-3962-5433

## Df Wilks approx F num Df den Df Pr(>F)


## karo$therapy 3 0.55695 3.9661 6 70 0.001797 **
## Residuals 36
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

# En función del resultado del test, podemos asumir que el efecto de la terapia ha
# sido distinto tanto en y1 como en y2 con un p-value de 0,001797
# Se observea que se presentan diferencias significativas entre las dos terapias

5. ANOVA
AV1=aov(karo$y1_sfpost_menos_sfpre ~ karo$therapy)
summary(AV1)

## Df Sum Sq Mean Sq F value Pr(>F)


## karo$therapy 3 1875 624.9 7.541 0.000487 ***
## Residuals 36 2983 82.9
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

# Se concluye que las terapias no contribuyen significativamente a la banda y1 analiza


da.

AV2=aov(karo$y2_oapost_menos_oapre ~ karo$therapy)
summary(AV2)

## Df Sum Sq Mean Sq F value Pr(>F)


## karo$therapy 3 293.6 97.87 1.841 0.157
## Residuals 36 1914.0 53.17

# Se concluye que las terapias si contribuyen significativamente a la banda y2 analiza


da.

6. CORRELACIÓN
# A continuaciÓn se realiza el test de correlación de Pearson

cor.test(karo$y1_sfpost_menos_sfpre,karo$y2_oapost_menos_oapre)

##
## Pearson's product-moment correlation
##
## data: karo$y1_sfpost_menos_sfpre and karo$y2_oapost_menos_oapre
## t = 2.7581, df = 38, p-value = 0.00889
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.1110189 0.6386619
## sample estimates:
## cor
## 0.4084042

# Se observa que si existe relación lineal de 0,408 entre las dos variables, por lo ta
nto
# no se puede asumir que sea nula la correlación.
Por: Mario Orlando Suárez Ibujés Fecha: 31/01/2024 https://orcid.org/0000-0002-3962-5433

7. NORMALIDAD
# NORMALIDAD
# A continuación se realiza el test de Shapiro-Wilk para cada una de las respuestas
shapiro.test(karo$y1_sfpost_menos_sfpre)

##
## Shapiro-Wilk normality test
##
## data: karo$y1_sfpost_menos_sfpre
## W = 0.97582, p-value = 0.5378

shapiro.test(karo$y2_oapost_menos_oapre)

##
## Shapiro-Wilk normality test
##
## data: karo$y2_oapost_menos_oapre
## W = 0.98411, p-value = 0.836

# Si se puede asumir normalidad en las dos variables.

# NORMALIDAD MULTIVARIADA
# A continuación se realiza el test multivariado de Shapiro-Wilk

mvShapiro.Test(as.matrix(karo[,10:11]))

##
## Generalized Shapiro-Wilk test for Multivariate Normality by
## Villasenor-Alva and Gonzalez-Estrada
##
## data: as.matrix(karo[, 10:11])
## MVW = 0.98284, p-value = 0.8995

# Si se puede asumir normalidad multivariada.

8. IGUALDAD DE VARIANZAS UNIVARIANTE


# A continuación se realiza el test multivariado de Barlett

bartlett.test(karo$y1_sfpost_menos_sfpre ~ karo$therapy)

##
## Bartlett test of homogeneity of variances
##
## data: karo$y1_sfpost_menos_sfpre by karo$therapy
## Bartlett's K-squared = 4.3844, df = 3, p-value = 0.2228

bartlett.test(karo$y2_oapost_menos_oapre ~ karo$therapy)

##
## Bartlett test of homogeneity of variances
##
## data: karo$y2_oapost_menos_oapre by karo$therapy
## Bartlett's K-squared = 0.46566, df = 3, p-value = 0.9264

# No Existe igualdad de varianza en los valores de karo en los valores


# dados a y1 y y2.
Por: Mario Orlando Suárez Ibujés Fecha: 31/01/2024 https://orcid.org/0000-0002-3962-5433

9. PRUEBA DE DIXON
dixon.test(sample(karo$y1_sfpost_menos_sfpre, size=30))

##
## Dixon test for outliers
##
## data: sample(karo$y1_sfpost_menos_sfpre, size = 30)
## Q = 0.26531, p-value = 0.4593
## alternative hypothesis: lowest value -16 is an outlier

# el valor más bajo -16 es un valor atípico

dixon.test(sample(karo$y2_oapost_menos_oapre, size=30))

##
## Dixon test for outliers
##
## data: sample(karo$y2_oapost_menos_oapre, size = 30)
## Q = 0.2, p-value = 0.8558
## alternative hypothesis: lowest value -13 is an outlier

# el valor más bajo -13 es un valor atípico

10. OUTLIERS MULTIVARIADOS


# Para observar los valores atÍpicos multivariados se realiza a partir del
# estadístico T2 y comparado con el percentil que este posee con la distribución
# chi cuadrado.

vec.medias=apply(karo[,10:11],2,mean);vec.medias

## y1_sfpost_menos_sfpre y2_oapost_menos_oapre
## 12.1 5.9

T2=c()
for(j in 1:dim(karo)[1]){
T2[j]=c((t(t(karo[j,10:11])-(vec.medias)))%*%solve(var(karo[,10:11]))%*%as.matrix(t(
karo[j,10:11])-(vec.medias)))
}
T2

## [1] 1.5819353309 0.1034401459 1.2004057303 2.8890068370 6.5101015904


## [6] 0.6726245856 4.8244074789 0.9142299400 0.8766066118 6.5189168572
## [11] 0.1940834017 2.9447661494 2.3324743741 1.9823350848 1.1979003019
## [16] 1.6922021144 1.0954343923 0.0004251371 2.2149139133 0.5923627076
## [21] 0.9265624092 0.2258482178 1.1299394661 0.6577639908 5.9799992143
## [26] 0.7898594281 0.9404688462 0.0792431202 3.5161976179 0.7898594281
## [31] 0.6779008257 3.7901229983 5.7197393307 0.9091754347 0.3712782956
## [36] 3.5453985166 0.7848057957 1.1023308676 2.2087358935 3.5161976179

LS=qchisq(0.95,df=dim(karo)-1)
colores=ifelse(T2>LS,"darkred","darkgreen")
plot(T2,col=colores,pch=19,cex=0.85,xlab="Observación")
grid(20,20,col="lightblue")
abline(h=LS)
etiquetas=which(T2>LS)
text(etiquetas,c(LS)+0.4,"outlier")
Por: Mario Orlando Suárez Ibujés Fecha: 31/01/2024 https://orcid.org/0000-0002-3962-5433

plot(karo$y1_sfpost_menos_sfpre,karo$y2_oapost_menos_oapre,pch=19,col=colores)
grid(20,20,col="lightblue")
Por: Mario Orlando Suárez Ibujés Fecha: 31/01/2024 https://orcid.org/0000-0002-3962-5433

# Lo anterior arroja como resultado que los datos no poseen datos multivariados.

11. INTERVALOS SIMULTANEOS MANOVA


# Se procede a realizar la determinación de los intervalos simultaneos de
# confianza para cada una de las combinaciones posibles de las especies:

# DATOS POR CADA ESPECIE


data.Control <- filter(karo, therapy == "Control")
data.Cognitive <- filter(karo, therapy == "Cognitive")
data.Behavioral <- filter(karo, therapy == "Behavioral")
data.Abreaction <- filter(karo, therapy == "Abreaction")

# VECTOR DE MEDIAS
vec.mediasControl=apply(data.Control[,10:11],2,mean);vec.mediasControl

## y1_sfpost_menos_sfpre y2_oapost_menos_oapre
## 1.0 4.3

vec.mediasCognitive=apply(data.Cognitive[,10:11],2,mean);vec.mediasCognitive

## y1_sfpost_menos_sfpre y2_oapost_menos_oapre
## 12.3 2.9

vec.mediasBehavioral=apply(data.Behavioral[,10:11],2,mean);vec.mediasBehavioral

## y1_sfpost_menos_sfpre y2_oapost_menos_oapre
## 16.0 6.3

vec.mediasAbreaction=apply(data.Abreaction[,10:11],2,mean);vec.mediasAbreaction

## y1_sfpost_menos_sfpre y2_oapost_menos_oapre
## 19.1 10.1

# MATRICES DE COVARIANZA
varControl=var(data.Control[,10:11]); varControl

## y1_sfpost_menos_sfpre y2_oapost_menos_oapre
## y1_sfpost_menos_sfpre 66.88889 18.33333
## y2_oapost_menos_oapre 18.33333 62.23333

varCognitive=var(data.Cognitive[,10:11]); varCognitive

## y1_sfpost_menos_sfpre y2_oapost_menos_oapre
## y1_sfpost_menos_sfpre 74.01111 17.58889
## y2_oapost_menos_oapre 17.58889 40.32222

varBehavioral=var(data.Behavioral[,10:11]); varBehavioral

## y1_sfpost_menos_sfpre y2_oapost_menos_oapre
## y1_sfpost_menos_sfpre 37.333333 7.222222
## y2_oapost_menos_oapre 7.222222 58.900000

varAbreaction=var(data.Abreaction[,10:11]); varAbreaction

## y1_sfpost_menos_sfpre y2_oapost_menos_oapre
## y1_sfpost_menos_sfpre 153.21111 51.98889
## y2_oapost_menos_oapre 51.98889 51.21111
Por: Mario Orlando Suárez Ibujés Fecha: 31/01/2024 https://orcid.org/0000-0002-3962-5433

# PARÁMETROS DEL INTERVALO


vec.mediasTotal=apply(karo[,10:11],2,mean);vec.mediasTotal

## y1_sfpost_menos_sfpre y2_oapost_menos_oapre
## 12.1 5.9

t1=vec.mediasControl-vec.mediasTotal
t2=vec.mediasCognitive-vec.mediasTotal
t3=vec.mediasBehavioral-vec.mediasTotal
t4=vec.mediasAbreaction-vec.mediasTotal

W=(dim(data.Control)[1]-1)*varControl+(dim(data.Cognitive)[1]-1)*varCognitive
+(dim(data.Behavioral)[1]-1)*varBehavioral+(dim(data.Abreaction)[1]-1)*varAbreaction;
W

## y1_sfpost_menos_sfpre y2_oapost_menos_oapre
## y1_sfpost_menos_sfpre 1714.9 532.9
## y2_oapost_menos_oapre 532.9 991.0

## y1_sfpost_menos_sfpre y2_oapost_menos_oapre
## y1_sfpost_menos_sfpre 1268.1 323.3
## y2_oapost_menos_oapre 323.3 923.0

pt=qt((0.05/(2*3*(3-1))),df=(dim(karo)[1]-3)); pt

## [1] -2.787602

12. INCLUSIÓN DE VARIABLES DE BLOQUEO LOCALIDADES.


# Se muestra a continuaciÓn el procedimiento para añadir un nuevo factor de
# bloqueo con el propósito de determinar si este mismo es capaz de cambiar las
# conclusiones tomadas en los análisis previos.

loc=c(rep("L1",10),rep("L2",10)) #Vector de bloqueo


karo_loc=cbind(karo,loc)
Reflect_join=cbind(karo$y1_sfpost_menos_sfpre,karo$y2_oapost_menos_oapre)

modM2=manova(Reflect_join~karo_loc$therapy+karo_loc$loc)
summary(modM2, test="Wilks")

## Df Wilks approx F num Df den Df Pr(>F)


## karo_loc$therapy 3 0.55695 3.9661 6 70 0.001797 **
## Residuals 36
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

# El modelo indica que hay diferencias entre los grupos, lo cual también se
# evidenció en los análisis previos, es decir que la inclusión de esta variable
# no cambia de forma significativa las conclusiones realizadas previamente.

También podría gustarte