Lectura de datos

# datos <- read.table("http://users.stat.ufl.edu/~winner/data/ereader1.dat")

#write.csv(datos, file = "experimento_lectura.csv", row.names = FALSE)

datos <- read.csv("experimento_lectura.csv")

names(datos) <- c("Dispositivo", "Iluminacion", "lectura")

str(datos)
## 'data.frame':    60 obs. of  3 variables:
##  $ Dispositivo: int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Iluminacion: int  1 1 1 1 1 2 2 2 2 2 ...
##  $ lectura    : num  1656 1406 1797 1156 1295 ...

Depurando datos: conversión de las variables a factores.

datos$Dispositivo <- factor(datos$Dispositivo, labels = c("d1","d2", "d3"))
datos$Iluminacion <- factor(datos$Iluminacion, labels = c("200Lx", "500Lx", "1000Lx", "1500Lx"))
str(datos)
## 'data.frame':    60 obs. of  3 variables:
##  $ Dispositivo: Factor w/ 3 levels "d1","d2","d3": 1 1 1 1 1 1 1 1 1 1 ...
##  $ Iluminacion: Factor w/ 4 levels "200Lx","500Lx",..: 1 1 1 1 1 2 2 2 2 2 ...
##  $ lectura    : num  1656 1406 1797 1156 1295 ...
library(knitr)

kable(x = datos[1:15,], caption = "Datos experimento")
Datos experimento
Dispositivo Iluminacion lectura
d1 200Lx 1656.26
d1 200Lx 1405.92
d1 200Lx 1797.21
d1 200Lx 1155.96
d1 200Lx 1295.44
d1 500Lx 1022.32
d1 500Lx 1538.07
d1 500Lx 1444.46
d1 500Lx 1257.76
d1 500Lx 1667.19
d1 1000Lx 1000.28
d1 1000Lx 1142.75
d1 1000Lx 1494.78
d1 1000Lx 1117.59
d1 1000Lx 713.07
# ejemplo de filtro de filas

d2500Lx <- datos[datos$Dispositivo == "d2" & datos$Iluminacion == "500Lx" ,]

kable(x = d2500Lx, caption =  "Filtro d2500Lx")
Filtro d2500Lx
Dispositivo Iluminacion lectura
26 d2 500Lx 1290.54
27 d2 500Lx 1079.31
28 d2 500Lx 741.65
29 d2 500Lx 1395.44
30 d2 500Lx 976.03
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
datos %>% 
  filter(Dispositivo == "d2" , Iluminacion == "500Lx") %>% 
  kable()
Dispositivo Iluminacion lectura
d2 500Lx 1290.54
d2 500Lx 1079.31
d2 500Lx 741.65
d2 500Lx 1395.44
d2 500Lx 976.03

Análisis exploratorio

Frecuencias

Experimento balanceado tiene las mismas repeticiones.

table(datos$Dispositivo)
## 
## d1 d2 d3 
## 20 20 20
table(datos$Iluminacion)
## 
##  200Lx  500Lx 1000Lx 1500Lx 
##     15     15     15     15
table(datos$Dispositivo, datos$Iluminacion)
##     
##      200Lx 500Lx 1000Lx 1500Lx
##   d1     5     5      5      5
##   d2     5     5      5      5
##   d3     5     5      5      5
barplot(table(datos$Dispositivo), main =  "Distribución por número de registros por dispositivo" , xlab = "Dispositivo", ylab = "Frecuencia")

Distribución del tiempo de lectura

summary(datos)
##  Dispositivo Iluminacion    lectura      
##  d1:20       200Lx :15   Min.   : 543.8  
##  d2:20       500Lx :15   1st Qu.: 862.0  
##  d3:20       1000Lx:15   Median :1111.5  
##              1500Lx:15   Mean   :1099.7  
##                          3rd Qu.:1304.6  
##                          Max.   :1797.2
  • Distribución del tiempo de lectura
hist(datos$lectura, main ="Distribución del tiempo de lectura\n(breaks = default)", 
     xlab = "Tiempo de lectura",
     ylab = "Frecuencia",
     col = "lightblue")

  • ¿Cuál es la probabilidad de que una pesona elegida al azar, dedique un tiempo de lectura, de máximo 1231?
# probabilidad con pnorm a la izquierda

pnorm(q = 1231 , mean = mean(datos$lectura), sd = sd(datos$lectura))
## [1] 0.6615547
# probabilidad con pnorm a la derecha

1 - pnorm(q = 1231 , mean = mean(datos$lectura), sd = sd(datos$lectura))
## [1] 0.3384453
pnorm(q = 1231 , mean = mean(datos$lectura), sd = sd(datos$lectura) , lower.tail = FALSE)
## [1] 0.3384453
# obteniendo el mismo vaor de la tabla

valor_estandarizado <- (1231 - mean(datos$lectura))/(sd(datos$lectura))

valor_estandarizado
## [1] 0.41671
pnorm(q = valor_estandarizado, mean = 0, sd = 1)
## [1] 0.6615547
qnorm(p = 0.6615547, mean = 0, sd = 1)
## [1] 0.4167099
hist(datos$lectura, main ="Distribución del tiempo de lectura\n(breaks = 30)", 
     xlab = "Tiempo de lectura",
     ylab = "Frecuencia",
     col = "lightblue",
     breaks = 30)

hist(datos$lectura, main ="Distribución del tiempo de lectura\n(breaks = 50", 
     xlab = "Tiempo de lectura",
     ylab = "Frecuencia",
     col = "lightblue",
     breaks = 50)

hist(datos$lectura, main ="Distribución del tiempo de lectura\n(breaks = 100)", 
     xlab = "Tiempo de lectura",
     ylab = "Frecuencia",
     col = "lightblue",
     breaks = 100)

Tiempo de lectura por dispositivo

  • medidas descriptivas ``
tapply(datos$lectura , datos$Dispositivo, mean)
##       d1       d2       d3 
## 1252.825 1032.199 1013.999
kable(aggregate(datos$lectura, list(datos$Dispositivo), mean))
Group.1 x
d1 1252.825
d2 1032.199
d3 1013.999
min(datos$lectura)
## [1] 543.75
max(datos$lectura)
## [1] 1797.21
res_disp <- tapply(datos$lectura, datos$Dispositivo, function(x){
  list(media = mean(x) , de = sd(x), minimo = min(x), maximo = max(x),
       mediana = median(x)
       )
  
})
  • resumen para dispositivo 1 (d1)
res_disp$`1`
## NULL
  • resumen para dispositivo 2 (d2)
res_disp$`2`
## NULL
  • resumen para dispositivo 3 (d3)
res_disp$`3`
## NULL
  • con librería dplyr
datos %>% 
  group_by(Dispositivo) %>% 
  summarise(media = mean(lectura), de = sd(lectura), minimo = min(lectura),
                        maximo = max(lectura) , mediana = median(lectura)) %>% 
  kable(digits = 2 , caption = "medidas descriptivas por dispositivo")
medidas descriptivas por dispositivo
Dispositivo media de minimo maximo mediana
d1 1252.83 305.62 572.08 1797.21 1233.12
d2 1032.20 307.44 551.34 1588.64 1085.92
d3 1014.00 288.58 543.75 1530.75 969.51

Tiempo de lectura por iluminación.

datos %>% 
  group_by(Iluminacion) %>% 
  summarise(media = mean(lectura), de = sd(lectura), minimo = min(lectura),
                        maximo = max(lectura) , mediana = median(lectura)) %>% 
  kable(digits = 2 , caption = "medidas descriptivas por dispositivo")
medidas descriptivas por dispositivo
Iluminacion media de minimo maximo mediana
200Lx 1306.9 276.55 862.69 1797.21 1295.44
500Lx 1194.9 276.74 741.65 1667.19 1233.46
1000Lx 970.7 279.57 543.75 1494.78 991.76
1500Lx 926.2 285.55 551.34 1304.63 894.61

Tiempo de lectura por dispositivo e iluminación.

datos %>% 
  group_by(Dispositivo, Iluminacion) %>% 
  summarise(media = mean(lectura), de = sd(lectura), minimo = min(lectura),
                        maximo = max(lectura) , mediana = median(lectura)) %>% 
  kable(digits = 2 , caption = "medidas descriptivas por dispositivo")
medidas descriptivas por dispositivo
Dispositivo Iluminacion media de minimo maximo mediana
d1 200Lx 1462.16 262.04 1155.96 1797.21 1405.92
d1 500Lx 1385.96 252.15 1022.32 1667.19 1444.46
d1 1000Lx 1093.69 281.71 713.07 1494.78 1117.59
d1 1500Lx 1069.49 285.44 572.08 1276.09 1195.20
d2 200Lx 1250.19 297.53 862.69 1588.64 1203.72
d2 500Lx 1096.59 258.72 741.65 1395.44 1079.31
d2 1000Lx 914.01 298.14 634.06 1308.35 860.09
d2 1500Lx 868.01 298.11 551.34 1218.54 894.61
d3 200Lx 1208.35 253.37 947.27 1530.75 1125.51
d3 500Lx 1102.15 262.81 797.31 1462.59 1105.44
d3 1000Lx 904.40 277.29 543.75 1304.59 869.63
d3 1500Lx 841.10 275.86 597.72 1304.63 815.47
datos %>% 
  group_by(Iluminacion, Dispositivo) %>% 
  summarise(media = mean(lectura), de = sd(lectura), minimo = min(lectura),
                        maximo = max(lectura) , mediana = median(lectura)) %>% 
  kable(digits = 2 , caption = "medidas descriptivas por dispositivo")
medidas descriptivas por dispositivo
Iluminacion Dispositivo media de minimo maximo mediana
200Lx d1 1462.16 262.04 1155.96 1797.21 1405.92
200Lx d2 1250.19 297.53 862.69 1588.64 1203.72
200Lx d3 1208.35 253.37 947.27 1530.75 1125.51
500Lx d1 1385.96 252.15 1022.32 1667.19 1444.46
500Lx d2 1096.59 258.72 741.65 1395.44 1079.31
500Lx d3 1102.15 262.81 797.31 1462.59 1105.44
1000Lx d1 1093.69 281.71 713.07 1494.78 1117.59
1000Lx d2 914.01 298.14 634.06 1308.35 860.09
1000Lx d3 904.40 277.29 543.75 1304.59 869.63
1500Lx d1 1069.49 285.44 572.08 1276.09 1195.20
1500Lx d2 868.01 298.11 551.34 1218.54 894.61
1500Lx d3 841.10 275.86 597.72 1304.63 815.47

Análisis gráfico

Distribución del tiempo de lectura

par(mfrow = c(1,2))

hist(datos$lectura , main = "distribución tiempo.lectura" ,
     xlab = " Tiempo de lectura",
     ylab = "Frecuencia")

boxplot(datos$lectura , main = "distribución tiempo.lectura",
        xlab = "",
        ylab = "Tiempo de lectura")

library(ggplot2)

ggplot(data = datos, mapping = aes(x = lectura)) +
  geom_histogram(color = "black",
                 fill = "lightblue") +
  labs(x = "Tiempo de lectura",
       y = "Frecuencias",
       title = "Distribución del tiempo de lectura")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

ggplot(data = datos, mapping = aes(y = lectura)) +
  geom_boxplot(color = "blue",
                 fill = "lightblue") +
  labs(x = "Frecuencias",
       y = "Tiempo de lectura",
       title = "Distribución del tiempo de lectura")

Tiempo de lectura por dispositivo

library(ggplot2)

ggplot(data = datos , aes(x = Dispositivo , y = lectura)) +
  geom_boxplot()+
  labs(x = "Dispositivo",
       y = "Tiempo de lectura",
       title = "Distribución del tiempo de lectura por dispositivo")

ggplot(data = datos , aes(x = lectura , fill = Dispositivo)) +
  geom_density(alpha = 0.35)+
  labs(x = "Tiempo de lectura",
       y = "Frecuencia",
       title = "Distribución del tiempo de lectura por dispositivo")

ggplot(data = datos , aes(x = lectura , fill = Dispositivo)) +
  geom_histogram(color = "black" , bins = 20, binwidth = 100)+
  labs(x = "Tiempo de lectura",
       y = "Frecuencia",
       title = "Distribución del tiempo de lectura por dispositivo")

library(ggplot2)

ggplot(data = datos , aes(x = Iluminacion , y = lectura)) +
  geom_boxplot()+
  labs(x = "Iluminacion",
       y = "Tiempo de lectura",
       title = "Distribución del tiempo de lectura por iluminación")

ggplot(data = datos , aes(x = lectura , fill = Iluminacion)) +
  geom_density(alpha = 0.35)+
  labs(x = "Tiempo de lectura",
       y = "Frecuencia",
       title = "Distribución del tiempo de lectura por iluminación")

ggplot(data = datos , aes(x = lectura , fill = Iluminacion)) +
  geom_histogram(color = "black" , bins = 20, binwidth = 100)+
  labs(x = "Tiempo de lectura",
       y = "Frecuencia",
       title = "Distribución del tiempo de lectura por iluminación")

Tiempo de lectura por dispositivo e iluminación

library(ggplot2)

ggplot(data = datos , aes(x = Dispositivo , y = lectura , fill = Iluminacion)) +
  geom_boxplot()

  • Gráfico de interacción
interaction.plot(datos$Dispositivo , datos$Iluminacion , datos$lectura,
                 mean)