Ejercicio 6: A graficar con ggplot!

El objetivo del ejercicio 6 lograr familiarizarse con el ploteo de datos, usando el potente paquete ggplot2. También la idea es refinar un poco el análisis de los datos.

Variables numéricas

Primero vamos a trabajar con los datos de firmas y escalas de personalidad del ejercicio 1. Acá están los datos

Empezamos

Primero que nada, carguen los datos. (¿Se acuerdan? Aquello de load() …)

  1. Graficar, usando geom_point(), la escala de narcisismo (NPI16TOTAL) contra la de dominancia social (SDTOTAL) (y vs. x).
p1=ggplot(datosLimpios,aes(y=NPI16TOTAL,x=SDTOTAL)) #el mapping= antes de aes se puede omitir si va como segundo argumento...
p1+geom_point()
  1. Hacer la misma gráfica, sólo que esta vez pintar los puntos según Sexo.
p1+geom_point(aes(col=Sex)) #el col=Sex puede ir en el aes() de la capa base.
  1. Otra vez la misma gráfica, pero además del color según el sexo, quiero que el tamaño del punto refleje la edad (Age). Tip: Usar el argumento alpha=0.3 al llamar a geom_point() para que quede más lindo.
p1+geom_point(aes(col=Sex,size=Age),alpha=0.3) 
  1. Graficar tamaño de la firma (Sign.Area) versus dominancia social (SDTOTAL), usando puntitos.
p2=ggplot(datosLimpios,aes(x=SDTOTAL,y=Sign.Area))
p2+geom_point() 
  1. Repetir la gráfica, pero esta vez que el color refleje el grado de narcisismo.
p2+geom_point(aes(col=NPI16TOTAL)) 
  1. A esta última gráfica, agrandarle el tamaño del punto, digamos a 2.
p2+geom_point(aes(col=NPI16TOTAL),size=2) 
  1. Mejor a esta gráfica le ponemos que el tamaño refleje el narcisismo, y el color el sexo… Tip: poner alpha=0.5
p2+geom_point(aes(col=Sex,size=NPI16TOTAL),alpha=0.5) 
  1. Realizar un histograma de la variable tamaño de firma.
ggplot(datosLimpios,aes(x=Sign.Area))+geom_histogram()

Diferencias entre sexos

Muy lindo todo, pero este data frame está en formato ancho. Y qué pasa si yo quiero un gráfico de barras para comparar las diferencias entre los sexos para TODAS las escalas de personalidad, y el tamaño de la firma y la aclaración… El formato largo se torna el más fácil de usar en esta situación.

Supongamos que hacer el clásico gráficos de barras de medias (y desvíos?) para comparar visualmente. Primero, tendría que: 1) Generar una columna llamada id en el data frame, cuyo valor corresponda al número de fila del data frame. Tip: la expresión 1:n genera todos los números enteros consecutios del 1 al n.

datosFund$id=1:nrow(datosFund)
  1. Fundir todas las variables numéricas del data frame, llamándole “medida” y “valor” a las columnas de varible y valor. Guardar el data frame fundido en datosFund.
datosFund=melt(datosLimpios,id=c("id","Sex"),variable.name = "medida",value.name = "valor")
  1. Calcular media y desvío estándar para todas las variables numéricas del data frame fundido. Claro que usando ddply(). ¿Van cachando por qué conviene fundir el data frame? Guardar los cálculos en una variable llamda paPlotear.
paPlotear=ddply(datosFund,c("medida"),summarize,media=mean(valor,na.rm=T),desvio=sd(valor,na.rm=T))
  1. Realizar un gráfico de barras con las medias de cada variable.
p4=ggplot(paPlotear,aes(x=medida,y=media))
p4+geom_bar(stat="identity")
  1. Calcular media y desvío estándar para todas las variables numéricas del data frame fundido, para cada sexo. Claro que usando ddply(). Guardar los cálculos en una variable llamda paPlotear2.
paPlotear2=ddply(datosFund,c("Sex","medida"),summarize,media=mean(valor,na.rm=T),desvio=sd(valor,na.rm=T))
  1. Realizar un gráfico de barras con las medias de cada variable, donde cada color corresponda a cada sexo. Que las barras no queden acumuladas.
p6=ggplot(paPlotear2,aes(x=medida,y=media,fill=Sex))
p6+geom_bar(stat="identity",position="dodge")
  1. Avanzado: Colocarle a la gráfica anterior, unos bigotes que correspondan al desvío estándar (media menos y media más desvío), agregando la capa geom_errorbar(). Tip: usar position=position_dodge(0.9) también en esta capa. Tip de belleza: pasar width=0.2 como argumento en esta capa para que luzca más bonito.
p6+geom_bar(stat="identity",position="dodge") + geom_errorbar(aes(ymin=media-desvio,ymax=media+desvio),position=position_dodge(0.9),width=0.2)