2.1. ¿Cuál será el resultado de ejecutar las siguientes instrucciones?: a) x = c(1,3,5,7,9)

x = c(1,3,5,7,9)
x
## [1] 1 3 5 7 9
  1. y = c(2,4,6,7,11,12)
y = c(2,4,6,7,11,12)
y
## [1]  2  4  6  7 11 12
  1. x+1
x+1
## [1]  2  4  6  8 10
  1. y*2
d2= y*2
d2
## [1]  4  8 12 14 22 24
  1. length(x) and length(y)
length(x)
## [1] 5
length(y)
## [1] 6
  1. x + y
x + y
## Warning in x + y: longitud de objeto mayor no es múltiplo de la longitud de uno
## menor
## [1]  3  7 11 14 20 13
  1. sum(x>5) and sum(x[x>5])
sum(x>5) 
## [1] 2
sum(x[x>5])
## [1] 16
  1. sum(x>5 | x< 3)
sum(x>5) 
## [1] 2
sum(x[x>5])
## [1] 16
  1. y[2]
y[2]
## [1] 4
  1. y[-2]
y[-2]
## [1]  2  6  7 11 12
  1. y[x]
y[x]
## [1]  2  6 11 NA NA
  1. (¿Que significa NA?) NA son las siglas de Not Availablel, lo que significa datos no disponibles o faltantes
  2. y[y>=8]
y[y>=8] 
## [1] 11 12

2.2. Un conductor europeo de viaje por Estados Unidos apunta las millas recorridas por su coche cada vez que llena el tanque de gasolina. La relación de las últimas 10 veces que lo ha llenado es la siguiente: 65241 65665 65998 66014 66547 66857 67025 67447 66958 67002 a) Crea una variable llamada “millas” que contenga los datos anotados.

millas = c(65241, 65665, 65998, 66014, 66547, 66857, 67025, 67447, 66958, 67002)
millas
##  [1] 65241 65665 65998 66014 66547 66857 67025 67447 66958 67002
  1. Crea una nueva variable “kms” y asígnale el valor de “millas” transformado en kms (una milla son 1,609 km).
kms = millas * 1.609
kms
##  [1] 104972.8 105655.0 106190.8 106216.5 107074.1 107572.9 107843.2 108522.2
##  [9] 107735.4 107806.2
  1. ¿Qué resultado produce la función diff aplicada sobre los datos anteriores?
diffmillas = diff(millas)
diffmillas
## [1]  424  333   16  533  310  168  422 -489   44
  1. ¿Qué funciones son adecuadas para resumir estos datos? summary(): Proporciona un resumen estadístico básico de los datos, incluyendo la mediana, los cuartiles y los valores mínimo y máximo. mean(): Calcula la media de los datos. sd(): Calcula la desviación estándar de los datos. min(): Encuentra el valor mínimo en los datos. max(): Encuentra el valor máximo en los datos. range(): Muestra el rango de los datos. quantile(): Calcula los cuantiles de los datos.
summary(millas)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   65241   66002   66702   66475   66991   67447

2.3. Una persona dispone de un contrato de pago mínimo telefónico, con el que cuenta poder controlar sus gastos. A pesar de esto cada mes tiene que pagar cantidades diferentes, que finalmente decide revisar. En el último año estas cantidades, en euros, han sido las siguientes: 47 32 40 36 49 31 49 30 49 35 48 32 a) ¿Cuánto le ha costado la factura del último año?

facturas = c(47, 32, 40, 36, 49, 31, 49, 30, 49, 35, 48, 32)
total = sum(facturas)
total
## [1] 478
  1. ¿Cuánto ha pagado en promedio cada mes?
promedio = mean(facturas)
promedio
## [1] 39.83333
  1. ¿Cuáles son las cantidades mínimas y máximas pagadas?
minimo = min(facturas)
maximo = max(facturas)
minimo
## [1] 30
maximo
## [1] 49
  1. ¿En qué mes se realizó cada pago?
meses = c("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")
mes_pago = cbind(meses,facturas)
mes_pago
##       meses        facturas
##  [1,] "Enero"      "47"    
##  [2,] "Febrero"    "32"    
##  [3,] "Marzo"      "40"    
##  [4,] "Abril"      "36"    
##  [5,] "Mayo"       "49"    
##  [6,] "Junio"      "31"    
##  [7,] "Julio"      "49"    
##  [8,] "Agosto"     "30"    
##  [9,] "Septiembre" "49"    
## [10,] "Octubre"    "35"    
## [11,] "Noviembre"  "48"    
## [12,] "Diciembre"  "32"
  1. ¿Cuantos meses pagó más de 40 euros?
mas40 = sum(facturas > 40)
mas40
## [1] 5
  1. ¿Qué porcentaje del gasto total representa esta cantidad?
porcentajemes = (mas40 / length(facturas)) * 100
porcentajemes
## [1] 41.66667

2.4. Con los datos siguientes: 61 88 73 49 41 72 99 07 12 13 87 91 05 17 97 a) Haz un diagrama de porcentual

datos = c(61, 88, 73, 49, 41, 72, 99, 7, 12, 13, 87, 91, 5, 17, 97)
pie(datos, labels = datos)

b) Obtén resúmenes numéricos de los datos.

resumendatos = summary(datos)
resumendatos
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    5.00   15.00   61.00   54.13   87.50   99.00
  1. ¿Qué diferencias hay entre summary(x) y fivenum(x)? summary(x): Inclye la media, la mediana y los cuartiles, el mínimo y el máximo, siendo mas completo fivenum(x): Incluye mínimo, primer cuartil (Q1), mediana (Q2), tercer cuartil (Q3) y máximo
fivenum(datos)
## [1]  5.0 15.0 61.0 87.5 99.0

2.5. R permite generar datos aleatorios con gran facilidad mediante instrucciones específicas que empiezan con “r” (rnorm, rpois, rbinom,…). a) Genera 100 valores de una distribución normal con rnorm(100).

valores = rnorm(100)
valores
##   [1] -0.736710626  0.059001023 -0.067829263 -0.267238556 -0.253628883
##   [6]  0.606369384 -1.295379822 -0.319393076  0.386267399 -2.266096287
##  [11] -1.164493195  0.212536384 -0.892593087  0.520132961  0.045695270
##  [16]  1.465092293  0.085861775  2.716806060 -1.844163474 -0.006199126
##  [21]  0.444198894  0.391606627 -0.852575124 -1.667287050  0.106374925
##  [26] -1.780745064  0.601393620 -2.259722985 -1.700897350  0.423981528
##  [31]  2.109634790  1.165938458  1.925985288 -1.057840389 -1.785577692
##  [36]  1.410434053  0.764224130  0.294459530  0.176832406 -0.018434687
##  [41] -0.559424606  0.378969549 -1.668401991  1.192438223 -0.200837332
##  [46]  0.590981574 -0.090739940  1.102535917 -0.172491114 -0.148186941
##  [51] -0.432835811  0.042274086 -1.656766929 -0.683775112  0.892082472
##  [56] -0.049814449 -0.622008759  0.108133658 -0.291317822 -0.683433469
##  [61] -0.663221870 -1.125024544  0.041849119 -1.007252720 -1.312770681
##  [66] -0.441330445 -0.580621897 -0.005602305 -1.412828171 -1.392882976
##  [71] -1.534184897 -0.613489104  0.391765060  0.611341956 -0.144783803
##  [76] -0.803700793  0.627367187 -0.350948906 -0.154501060  0.340470802
##  [81]  1.405527235  1.986330124 -0.148843068 -0.806267344  0.239645167
##  [86] -0.761915391  0.470441025  2.498083036  0.729577519 -0.745895362
##  [91] -1.409213369 -0.442910747 -0.074310774 -1.052556408  0.327889462
##  [96]  0.106130810  0.093980383 -0.051753597  2.258948419  0.933242084
  1. Realiza un histograma de los valores. Repite el proceso un par de veces. ¿Qué observas?
hist(valores, main = "Histograma de valores aleatorios")

Los datos generados por rnorm no son iguales cuando esta actividad se vuelve a realizar, por lo que el historigrama es diferente

  1. Realiza un resumen numérico de los datos.
summary(valores)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
## -2.26610 -0.74990 -0.07107 -0.11251  0.39982  2.71681

2.6. De forma similar al ejercicio genera 30 valores de una distribución binomial de parámetros (n=5 y p=0,9). a) Representa los resultados con un diagrama de barras o de pastel.

binomial = rbinom(30, size = 5, prob = 0.9)
barplot(table(binomial), main = "Diagrama de barras")

binomiales = rbinom(30, size = 5, prob = 0.9)
tablabionomial = table(binomial)
pie(tablabionomial, main = "Diagrama de pastel")

  1. Realiza un resumen numérico de los datos y compáralo con el del ejercicio anterior. ¿Qué deberías hacer para obtener un resumen similar?
summary(binomial)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     3.0     4.0     4.0     4.3     5.0     5.0

Se debe ajustar el tamaño de la muestra y luego calcular las estadísticas resumen correspondientes.

2.7. El número de fallos en los 23 primeros intentos de puesta en órbita de un satélite fue: 0 1 0 NA 0 0 0 0 0 1 1 1 0 0 3 0 0 0 0 0 2 0 1 (NA significa ”not available” – se ha perdido el dato). a) Representa gráficamente estos datos. Qué representación es más adecuada una diagrama boxplot o un diagrama de barras?

orbita <- c(0, 1, 0, NA, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 2, 0, 1)
boxplot(orbita)

barplot(table(orbita))

Para este caso la meor representacon es el diagrama de barras, se buede observar a simple vista la frecuencia b) Tabula los datos y calcula el número medio de errores (Puedes tener que probar con mean(x,na.rm=TRUE) o x[!is.na(x)] para prescindir de los valores faltantes.

tablaerrores <- table(orbita)
tablaerrores
## orbita
##  0  1  2  3 
## 15  5  1  1
errores = orbita[!is.na(orbita)]
errorbita = mean(errores)
errorbita
## [1] 0.4545455

2.8. En una encuesta en la que se evalúa el funcionamiento de un curso se han recogido las siguientes respuestas de 10 estudiantes a tres preguntas P1, P2 y P3: Estudiante 1 2 3 4 5 6 7 8 9 10 P1 3 3 3 4 3 4 3 4 4 3 P2 5 5 2 2 5 2 2 5 5 2 P3 1 3 1 3 3 3 1 3 1 1 a) Entra los datos mediante c(), scan(), read.table() y data.entry().

respuestas = matrix(c(
  3, 3, 3, 4, 3, 4, 3, 4, 4, 3,
  5, 5, 2, 2, 5, 2, 2, 5, 5, 2,
  1, 3, 1, 3, 3, 3, 1, 3, 1, 1
), nrow = 3, byrow = TRUE)
respuestas
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,]    3    3    3    4    3    4    3    4    4     3
## [2,]    5    5    2    2    5    2    2    5    5     2
## [3,]    1    3    1    3    3    3    1    3    1     1
  1. Tabula los resultados de cada pregunta por separado.
tablapregunta = function(matriz, pregunta) {
  cat("Tabla de frecuencia para la pregunta", pregunta, ":\n")
  tabla <- table(matriz[pregunta, ])
  print(tabla)
}

for (i in 1:3) {
  tablapregunta(respuestas, i)
}
## Tabla de frecuencia para la pregunta 1 :
## 
## 3 4 
## 6 4 
## Tabla de frecuencia para la pregunta 2 :
## 
## 2 5 
## 5 5 
## Tabla de frecuencia para la pregunta 3 :
## 
## 1 3 
## 5 5
  1. Realiza tablas de contingencia cruzadas para cada pregunta, de 2 en 2 y las 3 a la vez.
# Tabla P1 y P2
tablap1p2 = table(respuestas[1, ], respuestas[2, ])
print(tablap1p2)
##    
##     2 5
##   3 3 3
##   4 2 2
# Tabla P1 y P3
tablap1p3 = table(respuestas[1, ], respuestas[3, ])
print(tablap1p3)
##    
##     1 3
##   3 4 2
##   4 1 3
# Tabla P2 y P3
tablap2p3 = table(respuestas[2, ], respuestas[3, ])
print(tablap2p3)
##    
##     1 3
##   2 3 2
##   5 2 3
# Tabla completa
tablap1p2p3 = table(respuestas[1, ], respuestas[2, ], respuestas[3, ])
print(tablap1p2p3)
## , ,  = 1
## 
##    
##     2 5
##   3 3 1
##   4 0 1
## 
## , ,  = 3
## 
##    
##     2 5
##   3 0 2
##   4 2 1
  1. Haz un diagrama de barras apiladas de las preguntas 2 y 3.
P2 = c (5, 5, 2, 2, 5, 2, 2, 5, 5, 2)
P3 = c(1, 3, 1, 3, 3, 3, 1, 3, 1, 1)
barrapilada = c(P2,P3)
diagra = matrix(barrapilada,2,10,byrow = TRUE)

barplot(diagra,beside=F,xlab = "Estudiantes")

e) Haz un diagrama de barras con las tres preguntas simultáneamente.

trespreguntas = t(respuestas)

barplot(trespreguntas, beside = TRUE, legend.text = TRUE, col = c("blue", "pink", "green"), 
        ylim = c(0, 5), 
        main = "Diagrama de barras de las tres preguntas", 
        xlab = "Estudiante", ylab = "Respuesta")

2.9. Genera 2 vectores de 50 valores cada de una distribución normal con rnorm (50). a) Realiza una prueba de normalidad mediante Shapiro-Wilk de cada vector.

vector1 = rnorm(50)
vector1
##  [1] -0.011392775  0.114338341  0.452807912  0.167799291  0.964319811
##  [6] -0.183189499  0.757981731  0.242078200  0.901844525 -1.044072119
## [11] -0.264787805 -0.935563973  0.160064904  0.157458492 -2.057697834
## [16]  1.036297267  1.105700279 -0.516672291  0.615617958 -0.641728393
## [21]  0.184984591  0.097939995  0.565754655  1.085871285  1.246720248
## [26] -0.103538302 -0.930514794  0.782806200  0.173546621 -0.382984852
## [31]  0.979080454  0.803805738 -1.374161043 -1.587091671 -0.195537337
## [36]  1.650584869  0.558404432 -0.527117398  0.488184492 -0.422610138
## [41] -0.563451497 -0.494272683  0.387695900 -0.006567326 -0.436900153
## [46]  0.474188839  0.324938727 -0.325177780 -1.642521375  0.086267253
vector2 = rnorm(50)
vector2
##  [1]  0.70970597  1.23929053  0.90689558 -0.63458463 -1.09176360  0.35677654
##  [7] -0.78885695 -0.62044168 -0.59298590 -0.22657758 -0.94418390 -2.50071243
## [13]  0.90378630 -0.17458228  0.15729882 -1.05118236 -1.53179874  0.96321417
## [19] -0.31516261 -0.30095736 -1.99125355  1.79061052 -0.43574678  1.43645157
## [25]  1.30218672  0.95049995  0.14952098  0.77737301 -0.62420200 -1.11531935
## [31] -2.57526466  0.28224590 -1.70911310  1.35675189  0.55890039 -1.50671147
## [37] -0.51287522  0.75289737  1.36732143 -1.00848744  0.57017805  1.26999704
## [43] -0.53183286  1.33529516  0.49547269  0.86294665  0.76841305  0.30463944
## [49]  0.01397273 -0.37766746
shapiro.test(vector1)
## 
##  Shapiro-Wilk normality test
## 
## data:  vector1
## W = 0.97755, p-value = 0.4538
shapiro.test(vector2)
## 
##  Shapiro-Wilk normality test
## 
## data:  vector2
## W = 0.96376, p-value = 0.1277
  1. Determine si entre los vectores hay o no diferencias significativas, t-student test
TEST = t.test(vector1,vector2)
TEST
## 
##  Welch Two Sample t-test
## 
## data:  vector1 and vector2
## t = 0.37084, df = 90.254, p-value = 0.7116
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.3049187  0.4448848
## sample estimates:
##   mean of x   mean of y 
##  0.03839064 -0.03159243

2.10. Genera un vector de 50 valores por medio de rnorm y un vector de 50 valores por medio rbinom. c) Realiza una prueba de normalidad mediante Shapiro-Wilk de cada vector.

vector3 = rnorm(50)
vector3
##  [1] -1.550032931  1.120738669 -0.919537589 -0.093508341  1.766495632
##  [6] -0.811064002  1.111238549  1.852261025  0.447618413 -0.607740119
## [11]  0.847187972  1.015294825 -1.561955828  1.712374089  0.263303114
## [16]  0.910104462  1.214500243  2.482382025  0.240758692 -0.319846416
## [21]  0.078692850 -0.830989643 -0.764241296 -0.287930379  0.739368842
## [26] -0.119116717 -0.706029189 -0.985763442  0.411831383  1.620537994
## [31]  0.252641112 -0.269131967  0.798494316  1.509184654 -0.496170970
## [36] -0.332011273  1.798709266  0.357237813 -0.846256697  0.456574361
## [41] -0.451462087 -0.857158493  0.188226313  0.346268303 -1.186982604
## [46] -0.992425283  1.415345516 -0.002128834 -0.021862230 -1.379492894
vector4 = rbinom(50,3,0.9)
vector4
##  [1] 3 3 3 3 3 3 3 3 3 2 3 3 3 3 3 3 2 3 3 3 3 3 2 2 2 3 2 3 3 3 3 3 3 2 2 3 2 2
## [39] 2 3 3 3 2 3 3 3 3 3 3 2
shapiro.test(vector3)
## 
##  Shapiro-Wilk normality test
## 
## data:  vector3
## W = 0.97387, p-value = 0.3302
shapiro.test(vector4)
## 
##  Shapiro-Wilk normality test
## 
## data:  vector4
## W = 0.54716, p-value = 3.451e-11
  1. Determine si entre los vectores hay o no diferencias significativas, t-student test
TEST = t.test(vector3,vector4)
TEST
## 
##  Welch Two Sample t-test
## 
## data:  vector3 and vector4
## t = -16.584, df = 67.472, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -2.877826 -2.259593
## sample estimates:
## mean of x mean of y 
## 0.1712906 2.7400000