Para realizar el ejercicio, lo primero es comenzar un nuevo R Script con el nombre “ejercicio1” y guardarlo en un directorio o carpeta “cursoR” [File > New File > R Script, o Ctrl+Shift+N; File > Save, o Ctrl+S ].
Lo segundo, es decirle a R en qué directorio estamos trabajando [Session > Set Working Directory > To Source File Location].
Lo tercero, es bajar los datos que vamos a usar y guardarlos en la carpeta “cursoR”, los datos están en este link
Listo.
El objetivo del ejercicio es cargar un set de datos experimentales y preprocesarlos para luego hacer análisis más avanzados. Los datos provienen de un estudio que busca evaluar relación ente características de personalidad y tamaño de la firma, basado en una muestra de estudiantes de Facultad De Psicología. Los datos muestran los puntajes de cuestionarios y escalas de:
NPI: Narcisismo
GSES: Autoestima
AD: Dominancia agresiva
SD: Dominancia social
Y la medida del áera de la firma (Sign.Area) y el área de la aclaración de la firma (Name.Area)
Con el set de datos provistos, y usando los conceptos y funciones presentados en la guía de la sesión 1, completar las siguientes tareas:
Encontrar el número de participantes usando una sola línea de código
Encontrar la cantidad de datos faltantes para cada variable
Eliminar a los participantes con áreas de aclaración de la firma outliers (mayores a la media más 3 desvíos estándar). Indicar cuántos son.
Calcular el ratio área de la firma / área de aclaración para hombres y para mujeres.
Calcular la correlación entre el ratio área de la firma / área de aclaración de la firma y el puntaje de narcisismo para hombres y mujeres. Tip: usar la función cor.
[Atención con valores NA, pueden dar problemas]
Para cargar los datos en el entorno de trabajo (environment) de R Studio usar el siguiente comando:
load("datosLimpios.RData")A continuación se presenta un conjunto de soluciones posibles, el mismo problema puede resolverse de más de una manera:
#El número de participantes es el número de filas
nrow(datosLimpios)## [1] 330
summary(datosLimpios)## Sex Age NPI16TOTAL GSESTOTAL ADTOTAL
## M:142 Min. :17.00 Min. : 0.000 Min. :20.00 Min. : 7.00
## F:188 1st Qu.:19.00 1st Qu.: 1.000 1st Qu.:25.00 1st Qu.:12.00
## Median :21.00 Median : 3.000 Median :26.00 Median :15.00
## Mean :23.75 Mean : 3.233 Mean :26.66 Mean :15.75
## 3rd Qu.:25.00 3rd Qu.: 5.000 3rd Qu.:28.00 3rd Qu.:19.00
## Max. :52.00 Max. :12.000 Max. :35.00 Max. :31.00
## NA's :20 NA's :15
## SDTOTAL Sign.Area Name.Area
## Min. :13.00 Min. : 7.832 Min. : 9.903
## 1st Qu.:25.00 1st Qu.:18.155 1st Qu.:15.347
## Median :29.00 Median :22.061 Median :17.683
## Mean :28.39 Mean :23.894 Mean :20.005
## 3rd Qu.:32.00 3rd Qu.:28.012 3rd Qu.:21.723
## Max. :40.00 Max. :49.809 Max. :94.018
## NA's :20 NA's :6
# calculo los límites de outliers
mediaName=mean(datosLimpios$Name.Area) #la media
desvName=sd(datosLimpios$Name.Area) #el desvío
outUp=mediaName+3*desvName #guardo el umbral en una variable
# encuentro los no outliers
temp=datosLimpios$Name.Area<=outUp
# me quedo con los que no son outliers
# y lo guardo en una variable temporal, por las dudas
temp1=datosLimpios[temp,]
#chequeo que haya todo esté bien
summary(temp1) ## Sex Age NPI16TOTAL GSESTOTAL ADTOTAL
## M:136 Min. :17.00 Min. : 0.000 Min. :20.00 Min. : 7.00
## F:187 1st Qu.:19.00 1st Qu.: 1.000 1st Qu.:25.00 1st Qu.:11.75
## Median :21.00 Median : 3.000 Median :26.00 Median :15.00
## Mean :23.77 Mean : 3.254 Mean :26.67 Mean :15.71
## 3rd Qu.:25.00 3rd Qu.: 5.000 3rd Qu.:28.00 3rd Qu.:19.00
## Max. :52.00 Max. :12.000 Max. :35.00 Max. :31.00
## NA's :20 NA's :15
## SDTOTAL Sign.Area Name.Area
## Min. :13.00 Min. : 7.832 Min. : 9.903
## 1st Qu.:25.00 1st Qu.:18.155 1st Qu.:15.291
## Median :29.00 Median :22.000 Median :17.627
## Mean :28.38 Mean :23.777 Mean :19.002
## 3rd Qu.:32.00 3rd Qu.:27.739 3rd Qu.:21.431
## Max. :40.00 Max. :49.809 Max. :46.328
## NA's :20 NA's :2
# si ok
datosLimpios=temp1
nrow(datosLimpios) #Eran 330, ahora son 323, eliminé 7 sujetos## [1] 323
# separar el dataframe para hombres y mujeres
men=datosLimpios[datosLimpios$Sex=="M",]
women=datosLimpios[datosLimpios$Sex=="F",]
# me quedo solo con los casos que tiene ambos valores (firma y nombre)
temp=complete.cases(men[,c(7,8)])
men=men[temp,] # eliminé 2 participantes
temp=complete.cases(women[,c(7,8)])
women=women[temp,] # no tiré nninguna
ratioMen=mean(men$Sign.Area)/mean(men$Name.Area)
ratioWomen=mean(women$Sign.Area)/mean(women$Name.Area)cor(men$Sign.Area,men$NPI16TOTAL)## [1] -0.0967168
cor(women$Sign.Area,women$NPI16TOTAL)## [1] 0.2307823
Referencias: