\documentclass[12pt]{article} \usepackage{amsmath,amsthm,amsfonts,amssymb} \usepackage[utf8]{inputenc} \usepackage[spanish,activeacute]{babel} \usepackage{graphicx} \usepackage{Sweave} \begin{document} <>= library('abind') colPercents <- function(tab, digits=1){ dim <- length(dim(tab)) if (is.null(dimnames(tab))){ dims <- dim(tab) dimnames(tab) <- lapply(1:dim, function(i) 1:dims[i]) } sums <- apply(tab, 2:dim, sum) per <- apply(tab, 1, function(x) x/sums) dim(per) <- dim(tab)[c(2:dim,1)] per <- aperm(per, c(dim, 1:(dim-1))) dimnames(per) <- dimnames(tab) per <- round(100*per, digits) result <- abind(per, Total=apply(per, 2:dim, sum), Count=sums, along=1) names(dimnames(result)) <- names(dimnames(tab)) result } rowPercents <- function(tab, digits=1){ dim <- length(dim(tab)) if (dim == 2) return(t(colPercents(t(tab), digits=digits))) tab <- aperm(tab, c(2,1,3:dim)) aperm(colPercents(tab, digits=digits), c(2,1,3:dim)) } @ \section{Análisis de los datos titanic} En la base de datos \texttt{titanic.dat} se encuentran recogidas las variables \texttt{Class}, \texttt{Sex}, \texttt{Survived} y \texttt{Age} de los pasajeros del famoso transatlántico. Se desea conocer si existe relación entre las personas que sobreviviron y la clase a la que pertenecían.\\ En primer lugar se cargan los datos \texttt{titanic} con la órden: <>= options(width=65) @ <<>>= #data(titanic) titanic<-read.table("http://knuth.uca.es/repos/ebrcmdr/bases_datos/titanic.dat", header=TRUE, sep="", na.strings="NA", dec=".", strip.white=TRUE) @ Se puede ver los datos y las variables de estudio mediante la siguiente órden: <>= library('relimp') showData(titanic) @ Es interesante para nuestro estudio construir la tabla de doble entrada con las variables \texttt{Class} y \texttt{Survived}. <<>>= tabla<-xtabs(~Survived+Class, data=titanic) tabla @ Se observa según esta tabla que el número de supervivientes de primera clase y de la tripulación es aproximadamente el mismo en valor absoluto. Pero esto no indica que la supervivencia fuese independiente de la clase pues el número de personas de primera clase era muy inferior al de la tripulación.\\ Para establecer si existe relación entre la clase y la supervivencia recurrimos al test de la Chi-cuadrado:\\ <<>>= chisq.test(tabla,correct=FALSE) @ El valor del estadístico $\chi^2$ cuantifica la relación existente entre la variable \texttt{Class} y \texttt{Survived}. Para un valor de $\chi^2=0$ se tiene la ausencia de relación entre las variables, el problema es que el estadístico $\chi^2$ no está acotado de manera que no podemos conocer la intensidad de la relación. Sólo se sabe que cuanto mayor sea el coeficiente mayor será la relación entre las variables estudiadas.\\ Por este motivo se debe recurrir a algún coeficiente derivado que esté acotado. En este caso se utilizará el coeficiente de contingencia, que está acotado en el intervalo $[0,1)$ y cuya fórmula viene dada por:\\ $$ C=\sqrt{\frac{\chi^2}{\chi^2 +n}}$$ donde \texttt{n} es el tamaño muestral. <<>>= chisq<-190.4011 n<-length(titanic$Class) sqrt(chisq/(chisq+n)) @ El valor $C=\Sexpr{round(sqrt(chisq/(chisq+n)),4)}$ indica una cierta relación entre ambos atributos. Para poder visualizar la relación entre las variables puede ser muy útil la realización de un diagráma de barras de la variable \texttt{Survived} según la clase de los pasajeros \texttt{Class}.\\ \begin{figure}[ht] \centering <>= barplot(tabla,xlab='Clase',ylab='Frecuencia',legend.text=c('No superviviente','Superviviente'),beside=TRUE,col=cm.colors(2)) @ \caption{Diagrama de barras superviviencia en frecuencia absoluta}\label{diagrama_barras_absoluta} \end{figure} Observando el diagrama de barras de valores absolutos figura~\ref{diagrama_barras_absoluta} se aprecia lo deducido en su tabla de contingencia, i. e. el número de supervivientes de primera clase es muy similar al de la tripulación.\\ Una alternativa para apreciar la relación existente entre los dos atributos es construir el diagrama de barras de las frecuencias relativas figura~\ref{diagrama_barras_relativa}, o porcentajes de supervivencia respecto a cada clase, en lugar de utilizar las frecuencias absolutas.\\ R-Nota: Para poder ejecutar la orden \texttt{colPercents}, que nos devuelve los porcentajes por columnas de la supercvivencia, necesitamos cargar previamente el paquete \texttt{Rcmdr}. \begin{figure}[ht] \centering <>= tablaux<-colPercents(tabla) tablarel<-tablaux[1:2,1:4] barplot(tablarel,xlab='Clase',ylab='Frecuencia relativa',legend.text=c('No superviviente','Superviviente'),beside=TRUE,col=cm.colors(2)) @ \caption{Diagrama de barras superviviencia en frecuencia relativa}\label{diagrama_barras_relativa} \end{figure} Se puede observar como las barras de supervivencia disminuyen a medida que pasamos de primera clase a tripulación, como muestra la tabla de contingencia en porcentajes respecto de cada clase.\\ <>= tablaux @ Otro gráfico que puede ayudar a entender la supervivencia por clases es el diagrama de sectores de las personas no supervivientes agrupados por clases figura~\ref{diagrama_sectores_no_supervivientes}.\\ \begin{figure}[ht] \centering <>= tablafila<-rowPercents(tabla) pie(tablafila[1,1:4],col=rainbow(4),main='No supervivientes') @ \caption{Diagrama de sectores No supervivientes}\label{diagrama_sectores_no_supervivientes} \end{figure} Por último se construirá un gráfico de mosaico figura~\ref{grafico_mosaico_titanic} con todos los atributos del fichero titanic. \begin{figure}[ht] \centering <>= mosaicplot(table(titanic),main='Supervivientes del Titanic',color=c('red','green')) @ \caption{Gráfico de mosaico de supervivientes del titanic}\label{grafico_mosaico_titanic} \end{figure} \end{document}