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
y = c(2,4,6,7,11,12)
y
## [1] 2 4 6 7 11 12
x+1
## [1] 2 4 6 8 10
d2= y*2
d2
## [1] 4 8 12 14 22 24
length(x)
## [1] 5
length(y)
## [1] 6
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
sum(x>5)
## [1] 2
sum(x[x>5])
## [1] 16
sum(x>5)
## [1] 2
sum(x[x>5])
## [1] 16
y[2]
## [1] 4
y[-2]
## [1] 2 6 7 11 12
y[x]
## [1] 2 6 11 NA NA
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
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
diffmillas = diff(millas)
diffmillas
## [1] 424 333 16 533 310 168 422 -489 44
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
promedio = mean(facturas)
promedio
## [1] 39.83333
minimo = min(facturas)
maximo = max(facturas)
minimo
## [1] 30
maximo
## [1] 49
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"
mas40 = sum(facturas > 40)
mas40
## [1] 5
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
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
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
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")
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
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
# 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
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
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
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