Sei sulla pagina 1di 13

Practica_Longitudinal

Manuel Hernandez
16 de febrero de 2018

Código para realizar un ANOVA de medidas repetidas (una mues-


tra)

1. Construcción de la base de datos

NAA=c(0.22, 0.00, 1.03, 0.67, 0.75, 0.65, 0.59,


0.18, 0.00, 0.96, 0.96, 0.98, 1.03, 0.70,
0.73, 0.37, 1.18, 0.76, 1.07, 0.80, 1.10,
0.30, 0.25, 0.74, 1.10, 1.48, 0.39, 0.36,
0.54, 0.42, 1.33, 1.32, 1.30, 0.74, 0.56,
0.16, 0.30, 1.27, 1.06, 1.39, 0.63, 0.40,
0.30, 1.09, 1.17, 0.90, 1.17, 0.75, 0.88,
0.70, 1.30, 1.80, 1.80, 1.60, 1.23, 0.41,
0.31, 0.54, 1.24, 0.56, 0.77, 0.28, 0.40,
1.40, 1.40, 1.64, 1.28, 1.12, 0.66, 0.77,
0.60, 0.80, 1.02, 1.28, 1.16, 1.01, 0.67,
0.73, 0.50, 1.08, 1.26, 1.17, 0.91, 0.87)
Semana=c(rep(c("01","02","06","10","14","15","16"),12))
Paciente=c(rep(1:12, each=7))
base=cbind.data.frame(Paciente,Semana,NAA)

2. Análisis exploratorio de datos

Perfiles de Individuos (Pacientes)

library(ggplot2)
line1 <- ggplot(base, aes(Semana, NAA, colour = as.factor(Paciente),
group = as.factor(Paciente)))
line1 + stat_summary(fun.y = mean, geom = "point") +
stat_summary(fun.y = mean,geom = "line") +
labs(x = "SEMANA", y = "NAA")

1
as.factor(Paciente)
1.5 1
2
3
4
5
1.0
NAA

6
7
8
9
0.5
10
11
12

0.0

01 02 06 10 14 15 16
SEMANA

En el gráfico de lineas se observa lo siguiente:


• Algunos pacientes tienen el mismo patron de comportamiento del contenido de acido abscórbico en el
tiempo.
• Algunos pacientes presentaron un nivel inicial (Semana 1 y 2) de ácido abscórbico inferior al obtenido
una vez finalizado el tratamiento (semana 15 y 16).
• se presentaron algunos pacientes excepcionales:
– 8: Es el único que presenta una forma cuadratica en su perfil, lo cual indica que antes del
tratamiento tenia un nivel bajo de ácido abscórbico durante el tratamiento este aumento y se
mantuvo constante, pero despues del tratamiento sus mediciones bajaron considerablemente.
– 11 y 12: estos pacientes no presentaron un cambio significativo en sus mediciones antes y despues
del tratamiento. En el 11 s presenta también un comportamiento cuadratico.
– 4: fue el único que tuvo una ganancia creciente de ácido abscórbico durante el tratamiento. Se
destaca que si bien el nivel desminuyo una vez finalizado el tratamiento, el ultimo registro es
superior al inicial.
– 2 y 5: presentaron una ganancia con respecto a las mediciones obtenidas antes del tratamiento,
pero esta se mantuvo constante duerante el tratamiento.

Analisis descriptivo

library(pastecs)

## Loading required package: boot


tapply(base$NAA, base$Paciente, stat.desc, norm = T)

2
## $`1`
## nbr.val nbr.null nbr.na min max
## 7.0000000 1.0000000 0.0000000 0.0000000 1.0300000
## range sum median mean SE.mean
## 1.0300000 3.9100000 0.6500000 0.5585714 0.1297695
## CI.mean.0.95 var std.dev coef.var skewness
## 0.3175346 0.1178810 0.3433380 0.6146715 -0.3498620
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## -0.2203923 -1.3402515 -0.4221396 0.9361037 0.6039148
##
## $`2`
## nbr.val nbr.null nbr.na min max
## 7.00000000 1.00000000 0.00000000 0.00000000 1.03000000
## range sum median mean SE.mean
## 1.03000000 4.81000000 0.96000000 0.68714286 0.16048608
## CI.mean.0.95 var std.dev coef.var skewness
## 0.39269529 0.18029048 0.42460626 0.61793011 -0.65095927
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## -0.41006579 -1.58768086 -0.50007247 0.78398902 0.02834379
##
## $`3`
## nbr.val nbr.null nbr.na min max
## 7.00000000 0.00000000 0.00000000 0.37000000 1.18000000
## range sum median mean SE.mean
## 0.81000000 6.01000000 0.80000000 0.85857143 0.10631106
## CI.mean.0.95 var std.dev coef.var skewness
## 0.26013379 0.07911429 0.28127262 0.32760538 -0.40556660
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## -0.25548294 -1.32407559 -0.41704461 0.91928220 0.46383635
##
## $`4`
## nbr.val nbr.null nbr.na min max
## 7.0000000 0.0000000 0.0000000 0.2500000 1.4800000
## range sum median mean SE.mean
## 1.2300000 4.6200000 0.3900000 0.6600000 0.1781519
## CI.mean.0.95 var std.dev coef.var skewness
## 0.4359220 0.2221667 0.4713456 0.7141600 0.6477359
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## 0.4080353 -1.4135976 -0.4452414 0.8468372 0.1149567
##
## $`5`
## nbr.val nbr.null nbr.na min max
## 7.00000000 0.00000000 0.00000000 0.42000000 1.33000000
## range sum median mean SE.mean
## 0.91000000 6.21000000 0.74000000 0.88714286 0.15594129
## CI.mean.0.95 var std.dev coef.var skewness
## 0.38157460 0.17022381 0.41258188 0.46506814 0.11463461
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## 0.07221302 -2.12889355 -0.67053844 0.80691051 0.04791434
##
## $`6`
## nbr.val nbr.null nbr.na min max
## 7.00000000 0.00000000 0.00000000 0.16000000 1.39000000
## range sum median mean SE.mean

3
## 1.23000000 5.21000000 0.63000000 0.74428571 0.18666059
## CI.mean.0.95 var std.dev coef.var skewness
## 0.45674202 0.24389524 0.49385751 0.66353216 0.13820099
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## 0.08705844 -1.96758005 -0.61972946 0.90923687 0.39061504
##
## $`7`
## nbr.val nbr.null nbr.na min max
## 7.00000000 0.00000000 0.00000000 0.30000000 1.17000000
## range sum median mean SE.mean
## 0.87000000 6.26000000 0.90000000 0.89428571 0.11594040
## CI.mean.0.95 var std.dev coef.var skewness
## 0.28369594 0.09409524 0.30674947 0.34301059 -0.80911579
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## -0.50969504 -0.77029720 -0.24262081 0.86545669 0.16930696
##
## $`8`
## nbr.val nbr.null nbr.na min max
## 7.0000000 0.0000000 0.0000000 0.4100000 1.8000000
## range sum median mean SE.mean
## 1.3900000 8.8400000 1.3000000 1.2628571 0.2033846
## CI.mean.0.95 var std.dev coef.var skewness
## 0.4976643 0.2895571 0.5381051 0.4261014 -0.4129181
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## -0.2601139 -1.6218498 -0.5108347 0.9017497 0.3417086
##
## $`9`
## nbr.val nbr.null nbr.na min max
## 7.0000000 0.0000000 0.0000000 0.2800000 1.2400000
## range sum median mean SE.mean
## 0.9600000 4.1000000 0.5400000 0.5857143 0.1261869
## CI.mean.0.95 var std.dev coef.var skewness
## 0.3087682 0.1114619 0.3338591 0.5700034 0.8841176
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## 0.5569418 -0.6988512 -0.2201174 0.8640188 0.1644121
##
## $`10`
## nbr.val nbr.null nbr.na min max
## 7.0000000 0.0000000 0.0000000 0.6600000 1.6400000
## range sum median mean SE.mean
## 0.9800000 8.2700000 1.2800000 1.1814286 0.1345615
## CI.mean.0.95 var std.dev coef.var skewness
## 0.3292602 0.1267476 0.3560163 0.3013439 -0.2956038
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## -0.1862129 -1.6530520 -0.5206624 0.9301781 0.5524152
##
## $`11`
## nbr.val nbr.null nbr.na min max
## 7.00000000 0.00000000 0.00000000 0.60000000 1.28000000
## range sum median mean SE.mean
## 0.68000000 6.54000000 1.01000000 0.93428571 0.09551507
## CI.mean.0.95 var std.dev coef.var skewness
## 0.23371697 0.06386190 0.25270913 0.27048378 -0.03854177
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p

4
## -0.02427903 -1.78598376 -0.56253201 0.94970363 0.72700042
##
## $`12`
## nbr.val nbr.null nbr.na min max
## 7.00000000 0.00000000 0.00000000 0.50000000 1.26000000
## range sum median mean SE.mean
## 0.76000000 6.52000000 0.91000000 0.93142857 0.09974798
## CI.mean.0.95 var std.dev coef.var skewness
## 0.24407452 0.06964762 0.26390835 0.28333719 -0.28279803
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## -0.17814601 -1.47779894 -0.46546291 0.96956248 0.89527955
Para analizar la homogeneidad de las observaciones de cada individuo, consideremos la siguiente tabla
paciente vs cv
A partir de ella se deduce lo sifuiente
• los pacientes 10, 11 y 12 fueron los unicos con mediciones homogenias.
• El paciente 4, fue el que presento las nediones de acido mas heterogenias, seguido de los pacientes 6, 2 y
1
qplot( x=Paciente , y=NAA , data=base , geom=c("boxplot","jitter") , fill=as.factor(Paciente))+
geom_boxplot(alpha=0.4) +
stat_summary(fun.y=mean, geom="point", shape=20, size=5, color="red", fill="red")

as.factor(Paciente)
1.5 1
2
3
4
5
1.0
NAA

6
7
8
9
0.5
10
11
12

0.0

2.5 5.0 7.5 10.0 12.5


Paciente

En el diagrama de cajas, se respalda el hecho de que los pacientes 11 y 12 tengan perfiles similares.
Los unicos pacientes sin valores estremos son 10, 11 y 12

5
Si no existe mezcla de distribuciones, entonces se observa que los indivudos 1,2,9,10 y11 tengan mediciones
con asimetria negativa. Los otros individuos presentan asimetria positiva

Efecto de los tratamientos semanas

tapply(base$NAA, base$Semana, stat.desc, norm = T)

## $`01`
## nbr.val nbr.null nbr.na min max
## 12.00000000 0.00000000 0.00000000 0.16000000 1.40000000
## range sum median mean SE.mean
## 1.24000000 6.17000000 0.42500000 0.51416667 0.10215451
## CI.mean.0.95 var std.dev coef.var skewness
## 0.22484055 0.12522652 0.35387359 0.68824685 1.10373842
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## 0.86594614 0.52310925 0.21225837 0.84613480 0.03290277
##
## $`02`
## nbr.val nbr.null nbr.na min max
## 12.0000000 2.0000000 0.0000000 0.0000000 1.4000000
## range sum median mean SE.mean
## 1.4000000 6.9700000 0.4600000 0.5808333 0.1358779
## CI.mean.0.95 var std.dev coef.var skewness
## 0.2990653 0.2215538 0.4706950 0.8103788 0.4792799
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## 0.3760226 -1.2414824 -0.5037476 0.9150547 0.2475453
##
## $`06`
## nbr.val nbr.null nbr.na min max
## 12.00000000 0.00000000 0.00000000 0.74000000 1.80000000
## range sum median mean SE.mean
## 1.06000000 14.46000000 1.17500000 1.20500000 0.08361619
## CI.mean.0.95 var std.dev coef.var skewness
## 0.18403799 0.08390000 0.28965497 0.24037757 0.57016791
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## 0.44732945 -0.46521251 -0.18876601 0.94190992 0.52320478
##
## $`10`
## nbr.val nbr.null nbr.na min max
## 12.00000000 0.00000000 0.00000000 0.56000000 1.80000000
## range sum median mean SE.mean
## 1.24000000 12.95000000 1.08000000 1.07916667 0.09835355
## CI.mean.0.95 var std.dev coef.var skewness
## 0.21647471 0.11608106 0.34070671 0.31571278 0.34184765
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## 0.26819910 -0.58834911 -0.23873029 0.95843017 0.76120605
##
## $`14`
## nbr.val nbr.null nbr.na min max
## 12.00000000 0.00000000 0.00000000 0.75000000 1.60000000
## range sum median mean SE.mean
## 0.85000000 13.96000000 1.16500000 1.16333333 0.07441014
## CI.mean.0.95 var std.dev coef.var skewness

6
## 0.16377561 0.06644242 0.25776428 0.22157388 -0.04529589
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## -0.03553722 -1.04182418 -0.42273368 0.96329955 0.82968878
##
## $`15`
## nbr.val nbr.null nbr.na min max
## 12.00000000 0.00000000 0.00000000 0.28000000 1.23000000
## range sum median mean SE.mean
## 0.95000000 9.08000000 0.74500000 0.75666667 0.07721804
## CI.mean.0.95 var std.dev coef.var skewness
## 0.16995577 0.07155152 0.26749115 0.35351253 -0.06679455
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## -0.05240416 -0.87374780 -0.35453451 0.97627944 0.96433169
##
## $`16`
## nbr.val nbr.null nbr.na min max
## 12.00000000 0.00000000 0.00000000 0.36000000 1.10000000
## range sum median mean SE.mean
## 0.74000000 7.71000000 0.63000000 0.64250000 0.06735394
## CI.mean.0.95 var std.dev coef.var skewness
## 0.14824502 0.05443864 0.23332089 0.36314535 0.38624593
## skew.2SE kurtosis kurt.2SE normtest.W normtest.p
## 0.30303210 -1.13831668 -0.46188677 0.93316046 0.41481816
qplot( x=Semana , y=NAA , data=base , geom=c("boxplot","jitter") , fill=Semana)+
geom_boxplot(alpha=0.4) +
stat_summary(fun.y=mean, geom="point", shape=20, size=5, color="red", fill="red")

7
1.5

Semana
01
02
1.0 06
NAA

10
14
15
0.5 16

0.0

01 02 06 10 14 15 16
Semana
#tabla semana, cv(%), normalidad ic para mu al 95%

De la tabla y el diagrama de cajas observamos diferencias en las medias de las semanas durante el tratamiento
con respecto al resto de semanas.
De manera independiente se encontro normalidad en todas las semanas exepto en la primera semana.
Se observo que antes de aplicar el tratamiento los datos para las semanas son muy heteroneas, durante el
tratamiento se observa homogeneidad y al fianal del tratamiento son heteroneas pero no tanto como al final.

3. Validación de supuestos

3.1 Normalidad

shapiro.test(base$NAA)

##
## Shapiro-Wilk normality test
##
## data: base$NAA
## W = 0.98482, p-value = 0.4291
hist(base$NAA)

8
Histogram of base$NAA
15
Frequency

10
5
0

0.0 0.5 1.0 1.5

base$NAA

A partir de la tabla2 y de la prueba de shapiro welk aplicada al contenido de ácido abscórbico (p-valor=0.4291),
se puede concluir que dicha variable se distribuye aproximadamente normal a un nivel de significancia del 5%

Realización paso a paso del histograma

n=length(base$NAA)
k=round(1+3.322*log10(n),0)
R=max(base$NAA)-min(base$NAA)
h=R/k# aprox. 0.26
h=0.26
R2=k*h
a=R2-R
min2=min(base$NAA)
max2=max(base$NAA)+a

puntos=round(min2+(0:k)*h,2) #h=0.51
hist(base$NAA, freq=F, main = '', xlab = '', ylab='fi',
col='red',breaks = puntos) #breaks representa los limites de clases
lines(density(base$NAA),col="blue")

9
1.0
0.8
0.6
fi

0.4
0.2
0.0

0.0 0.5 1.0 1.5

qqnorm(base$NAA, main="QQ-plot del Volumen",col='blue')


qqline(base$NAA, col="red")

10
QQ−plot del Volumen
1.5
Sample Quantiles

1.0
0.5
0.0

−2 −1 0 1 2

Theoretical Quantiles

qplot(Volumen, data=base, geom="density", fill=as.factor(sujeto), alpha=I(.5),


xlab="Volumen",ylab="Densidad")

#3. Validación de supuestos


# 3.1 Normalidad
shapiro.test(base$Volumen)
hist(base$Volumen)

hist(base$Volumen, freq=T, main = 'Volumen', xlab = '', ylab='ni', col='red')

#Realización paso a paso del histograma


n=length(base$Volumen)
k=round(1+3.322*log10(n),0)
R=max(base$Volumen)-min(base$Volumen)
h=R/k# aprox. 5.5
R2=k*5.5
a=R2-R
min2=min(base$Volumen)-a
max2=max(base$Volumen)

puntos=round(min2+(0:k)*h,2) #h=0.51

11
hist(base$Volumen, freq=F, main = '', xlab = '', ylab='fi',
col='red',breaks = puntos) #breaks representa los limites de clases

qplot(Volumen, data=base, geom="density", fill=Temp.t, alpha=I(.5),


xlab="Volumen",ylab="Densidad")

qqnorm(base$Volumen, main="QQ-plot del Volumen",col='blue')


qqline(base$Volumen, col="red")
op <- par(fig=c(.05,.5,.5,0.98), new=TRUE)
hist(base$Volumen, probability=T,
col="light blue", xlab="", ylab="", main="", axes=F,breaks=puntos)
lines(density(base$Volumen), col="red", lwd=2)
box()
par(op)

# 3.2 Esfericidad
datos=as.data.frame( t(matrix(Volumen,ncol=8,nrow=6)))
names(datos)=c("-10","25","37","50","65","80")

library(Hmisc)
var(as.matrix(datos))

library(car)
scatterplotMatrix(datos, smooth = F)

datos$d1025 <- datos[,1]-datos[,2]


datos$d1037 <- datos[,1]-datos[,3]
datos$d1050 <- datos[,1]-datos[,4]
datos$d1065 <- datos[,1]-datos[,5]
datos$d1080 <- datos[,1]-datos[,6]
datos$d2537 <- datos[,2]-datos[,3]
datos$d2550 <- datos[,2]-datos[,4]
datos$d2565 <- datos[,2]-datos[,5]
datos$d2580 <- datos[,2]-datos[,6]
datos$d3750 <- datos[,3]-datos[,4]
datos$d3765 <- datos[,3]-datos[,5]
datos$d3780 <- datos[,3]-datos[,6]
datos$d5065 <- datos[,4]-datos[,5]
datos$d5080 <- datos[,4]-datos[,6]
datos$d6580 <- datos[,5]-datos[,6]

boxplot(datos[,7:21], col='green', main='Boxplots de las diferencias de tratamientos')

#Forma 1 función ezANOVA de la libreria ez


library(ez)
m3=ezANOVA(data=base, dv=Volumen, wid=as.factor(sujeto),within=Temp.t,detailed = TRUE)

1 - pf(3.097308, 5, 35) #valor p prueba F "original"

1 - pf(3.097308, 0.5364286*5, 0.5364286*35) # valor p ajuste Greenhouse-Geisser

12
1 - pf(3.097308, 0.9012407*5, 0.9012407*35) # valor p ajuste Huynh-Fieldt

(0.5364286+0.9012407)/2
1 - pf(3.097308, 0.7188347*5, 0.7188347*35) # valor p promedio de ajustes

#Forma 2 función lm de la libreria stats


m1=lm(Volumen~as.factor(sujeto)+Temp.t, data=base)
anova(m1)

friedman.test(cbind(Volumen,Temp.t,sujeto))

#Forma 3 función aov de la libreria car


m2=aov(Volumen~as.factor(sujeto)+Temp.t, data=base)
summary(m2)

library(multcomp)
summary(glht(m2,linfct=mcp(Temp.t="Tukey")))

13

Potrebbero piacerti anche