Está en la página 1de 6

## este script propone la solución al ejercicio opcional de R de la clase.

###### EJERCICIO 1

setwd("C:/Users/Xabi/Psicometría/Practices") ##cada usuario tendrá su ruta correspondiente.


Pero todos deberemos cambiarla en

## con cada inicio de sesión.

install.packages("readxl")#este comando sólo es necesario ejecutarlo una vez. Una vez


instalado el paquete, no es necesario

## ejecutarlo de nuevo. En la máquina virtual no hay que ejecutarlo porque el paquete está
instalado por defecto, pero otros

## paquetes podrán requerirlo con cada uso de la máquina virtual (comprobarlo que están
instalados en la pestaña packages)

library(readxl) ## para poder disponer de los comandos de la paquete es necesario activar la


librería en cada sesión

df <- read_xlsx("dataset_1.xlsx", sheet = "adults") ## este comando será necesario para cargar
la tabla de datos a nuestra

## por lo que lo ejecutaremos en cada sesión.

df <- as.data.frame(df) #comando no del todo necesario, pero que luego hará los resultados
más facilmente interpretables por

## otras funciones de R.

###### EJERCICIO 2

xabi <- TRUE

benat <- FALSE

5>4

10 <= 8

xabi <- c (3, 6, 10)

xabi <= 6

## < significa menor que

z <- 5

5<4
5<6

5<z

## > significa mayor que

5>4

5>6

5>z

## <= significa menor o igual que

5 <= 4

5 <= 6

5 <= z

## <= significa mayor o igual que

5 >= 4

5 >= 6

5 >= z

## <= significa igual que

5 == 4

5 == 6

5 == z

## != significa distino que

5 != 4

5 != 6

5 != z

## ! es el 'not', o "lo contrario a". Siempre precede a la expresión (not TRUE significa FALSE y
viceversa)

!TRUE
!FALSE

!(5 > 4)

!(5 > 6)

!(5 > z)

## EJERCICIO 2.1

names(df) #voy a ver los nombres de las variables...

df$Sex # y compruebo que este comando accede a la variable de género que me interesa

index <- df$Sex == 0 #genero mi sucesión de valores para filtrar la variable

index <- df$Sex < 0.5 #alternativa 1

index <- df$Sex <= 0.5 #alternativa 2

#podría haber alguna otra alternativa.

## EJERCICIO 2.2

#llamaré a la nueva tabla df_males:

df_males <- df[index,]

## EJERCICIO 3

## EJERCICIO 3.1

# buscando en la web se puede encontrar que la función sd() devuelve la desviación estándar
de un conjunto de valores

# como ejemplo

print(sd(df$Planeation))

print(sd(df$Age))

## EJERCICIO 3.2

# en el primer ejemplo del ejercicio anterior, se puede observar que el resultado de la función
es NA (not applicable).
# Esto es porque R siempre quiere que reconozcamos que hay valores perdidos en nuestra
tabla de datos. Dado que la columna

# "Planeation" hay valores NA, R quiere que seamos explicitos en el caso que queramos
ignorarlos. Para ello, tendremos que

# escribir el argumento na.rm = TRUE (na.rm quiere decir "NA remove").

# Sería fácil diseñar R para que ignorara los valores perdidos en la tabla, pero no es lo que
decidieron los que

# crearon R. Sin embargo no optaron por es, es una convención de R; si quieres seguir
adelante, que sea con plena

# consciencia de que tienes huecos en la tabla.

print(sd(df$Planeation, na.rm = TRUE))

## EJERCICIO 3.3

# aunque puede haber más formas, propongo estas dos:

# Opción 1: usar dim para conocer el número de filas de una tabla sólo de mujeres

index_females <- df$Sex==1 #analogamente al ejercicio 2.1, obtengo un ínidice de las mujeres

df_females <- df[index_females,] #genero una tabla con las mujeres

total_sujetos <- dim(df)[1] #obtengo el primer valor de las dimensiones de la tabla general (en
número de filas, es decir

# el total de sujetos encuestados)

total_mujeres <- dim(df_females)[1] #obtengo el primer valor de las dimensiones de la tabla


de chicas (el número de filas,

# el total de mujeres)

print(total_mujeres/total_sujetos) #devuelvo el valor que me pide el problema.

# Opción 2 (más difícil): los valores TRUE y FALSE se transforman en 1 y 0 respectivamente


cuando se transforman

# en números (hay que pensar que aunque por convención se llamen TRUE y FALSE pueden ser
cualquier variable binaria,

# ON y OFF, SI y NO, etc., son algo más que verdadero y falso)

as.numeric(df$Sex)

chicas <- as.numeric(!df$Sex) # si les "doy la vuelta" con !, de manera que las chicas son TRUE,
puedo obtener un 1 por cada

# mujer en un vector que transformo en numérico

total_sujetos2 <- sum(chicas)/dim(df)[1] # sumo esos 1 y los divido entre las dimensiones de la
tabla completa
print(total_sujetos2)

# Opción 3 (muy difícil, pero muy rápido): mean() transforma los valores TRUE y FALSE
automáticamente en 1 y 0

# en numéricos antes de calcular la media.

total_sujetos3 <- mean(!df$Sex) # como la media suma los valores y lo divide entre el número
de valores, la función resulta

# darnos el valor de la proporción en este caso.

print(total_sujetos3)

## EJERCICIO 3.4

edades <- df$Age #voy a guardar las edades en otra variable, aunque no es necesario

media_edad <- mean(edades)

sd_edad <- sd(edades)

print(media_edad)

print(sd_edad)

## EJERCICIO 3.5

# ya tenemos generados los objetos age_females y age_males generados anteriormente, por


lo que no tengo que generarlos

# de nuevo

a <- mean(age_males)

b <- mean(age_females)

print (a-b)

# la diferencia de medias es tan solo de 4 años... Aunque no forma parte del ejercicio también
podemos comparar las medianas

a2 <- median(age_males)

b2 <- median(age_females)

print (a2-b2)

# la diferencia es algo menor, pero no excesiva. Pero parece que los hombres son algo mayores
que las mujeres en nuestra

# muestra. ¿Superará este efecto un test estadístico?

t_test <- t.test(age_males, age_females)

print(t_test) # el valor de p resulta ser significativo para alpha = 0.05.


# Sin embargo, hay que pensar, no solo en si el test es significativo o no. ¿Es crítica una
diferencia de edad de 6 años

# en la edad adulta para la consecución de un test de inteligencia? El tamaño del efecto parece
lo suficientemente pequeño como para ser ignorado.

También podría gustarte