Examen 2014 Done
Examen 2014 Done
Examen 2014 Done
Ejercicio R:
En el campus virtual encontraras los fichero de datos “xc1.dat” y “xc2.dat”.
Descá rgalos y grá balos en el directorio “d:/temp”. Crea el directorio (o carpeta) en
caso de que no exista previamente.
Desde “R studio” importa el fichero de datos. Las dos matrices contienen fragmentos
de un cromatograma para 20 sujetos control (xc1) y para 20 sujetos condició n (xc2).
Los datos está n separados por tabuladores. Sin embargo, al importar los datos desde
Rstudio observa que aparece una columna extra (columna 21) con NA (not a number).
controlx1<-read.table("xc1.dat.txt",sep="")
controlx1$V21<-rep(NA,481)
diseasex2<-read.table("xc2.dat.txt",sep="")
diseasex2$V21<-rep(NA,481)
Tarea 1)
Lo primero que debéis hacer es corregir este pequeñ o problema al importar los datos
y eliminar esa columna de las dos matrices. Os deben quedar dos data.frames de
tamañ o 481 filas x 20 columnas. Para facilitar el resto de las tareas os recomiendo que
transforméis los data.frame en matrices con el comando “as.matrix”. Consulta la ayuda
si tienes dudas sobre este comando. (1 punto)
controlx1c<-controlx1[,1:20]
diseasex2c<-diseasex2[,1:20]
CON1<-as.matrix(controlx1c)
DIS2<-as.matrix(diseasex2c)
matplot(controlx1c$V1,type = "l",col="blue")
Tarea 4)
Estima y sustrae la línea de base del espectro anterior ya filtrado mediante el método
de Asymetric Least Squares. Si utilizas la versió n por defecto observará s que la línea
de base no queda bien estimada. Para ello representa en la misma figura el espectro y
la línea de base estimada. Incorpora la grá fica al fichero Word. Para mejorar la línea
de base estimada es necesario reducir varios ordenes de magnitud un pará metro
interno (constante de regularizació n lambda) . Consulta la ayuda para ver como tocar
este pará metro. Determina a tu parecer el mejor pará metro de regularizació n y
representa ahora de nuevo la línea de base estimada con el nuevo pará metro.
Incorpora la grá fica al fichero word e indica el valor de lambda utilizado. Finalmente
sustrae la línea de base estimada de los datos originales y representa como queda el
cromatograma. Incorpora la grá fica al fichero Word. (2 puntos)
matplot(XC1filt,type = "l",col="blue",ylim = c(-1,17))
lines(asysm(XC1filt,lambda = 1E6,p = 1E-3),type="l",col="gray")
## reducimos 3 ordenes de magnitud lambda=1E3
lines(asysm(XC1filt,lambda = 1E3,p = 1E-3),type="l",col="red")
## linea de base corregida
lines(XC1filt-asysm(XC1filt,lambda = 1E3,p = 1E-3),type="l",col="green")
legend("toplef",legend=c("Rawdata","Baseline
default","Baselinefitted","Baselinecorrected"),col=c("blue","gray","red",
"green"),lty=c("solid","solid","solid","solid"))
Puntos Bonus
El preprocesado que has realizado para un sujeto, debe extenderse a todos los sujetos
(40 en total). Propó n un có digo R utilizando bucles for que realice el fitrado de las 40
(20+20) columnas y la estimació n de la línea de base también de las 40 columnas
(20+20) (2 puntos).
matplot(XC1filt,type = "l",col="blue",ylim = c(-1,17))
for ( i in 1:20){
XC1_filt<-sgolayfilt(controlx1c[,i],p=2,n=21)
lines(XC1_filt-asysm(XC1_filt,lambda = 1E3, p=1E-3),type =
"l",col="green")
XC2filt<-sgolayfilt(diseasex2c[,i],p=2,n=21)
lines(XC2filt-asysm(XC2filt,lambda = 1E3, p=1E-3),type = "l",col="red")
}