x= c(1,3,5,7,9)
x
## [1] 1 3 5 7 9
#Punto B:
y=c(2,4,6,7,11,12)
y
## [1] 2 4 6 7 11 12
#Punto C:
x+1
## [1] 2 4 6 8 10
#Punto D:
y*2
## [1] 4 8 12 14 22 24
#Punto E:
length(x)
## [1] 5
length(y)
## [1] 6
#Punto F:
H=x + y
## Warning in x + y: longitud de objeto mayor no es múltiplo de la longitud de uno
## menor
#Debido a que los vectores tienen longitudes diferentes, R iguala las longitudes emparejando los elementos de ambos vectores y reciclando los elementos de ‘x’ para que coincidan con la longitud de ‘y’.
#Punto G:
sum(x>5)
## [1] 2
#Suma los elementos de ‘x’ que son mayores que 5
sum(x[x>5])
## [1] 16
#Punto H:
sum(x>5|x<3)
## [1] 3
#Punto I:
y[2]
## [1] 4
#Punto J:
y[-2]
## [1] 2 6 7 11 12
#Punto K:
y[x]
## [1] 2 6 11 NA NA
#Punto L: #¿Que significa NA?: Representa un valor desconocido “not available”
#Punto M:
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
#Punto A:
millas = c(65241, 65665, 65998, 66014, 66547, 66857, 67025, 67447, 66958, 67002)
millas
## [1] 65241 65665 65998 66014 66547 66857 67025 67447 66958 67002
#Punto B:
kms = millas * 1.609 # Millas a Kilómetros
kms
## [1] 104972.8 105655.0 106190.8 106216.5 107074.1 107572.9 107843.2 108522.2
## [9] 107735.4 107806.2
#Punto C:
diffm = diff(millas)
diffm
## [1] 424 333 16 533 310 168 422 -489 44
diffk = diff(kms)
diffk
## [1] 682.216 535.797 25.744 857.597 498.790 270.312 678.998 -786.801
## [9] 70.796
#Punto D:
#Millas recorridas:
total_millas = sum(millas)
total_millas
## [1] 664754
#promedio
prom_millas = mean(millas)
prom_millas
## [1] 66475.4
#mediana
median(millas)
## [1] 66702
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
pagos = c(47,32,40,36,49,31,49,30,49,35,48,32)
pagos
## [1] 47 32 40 36 49 31 49 30 49 35 48 32
#Punto A:
total_pagos = sum(pagos)
total_pagos
## [1] 478
#Punto B:
prom_mes = mean(pagos)
prom_mes
## [1] 39.83333
#Punto C:
min(pagos)
## [1] 30
max(pagos)
## [1] 49
#Punto D:
meses = c("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")
pagos_por_mes = data.frame(Mes = meses, Pago = pagos)
pagos_por_mes
## Mes Pago
## 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
#Punto E:
meses_mas40 = sum(pagos>40)
meses_mas40
## [1] 5
#Punto F:
porcentaje = (meses_mas40/length(pagos))*100
sprintf("%.2f%%", porcentaje)
## [1] "41.67%"
#2.4. Con los datos siguientes: 61 88 73 49 41 72 99 07 12 13 87 91 05 17 97
#Punto A:
datos = c(61, 88, 73, 49, 41, 72, 99, 7, 12, 13, 87, 91, 5, 17, 97)
porcentajes = datos / sum(datos) * 100
barplot(porcentajes, names.arg = datos, ylab = "Porcentaje (%)", main = "Diagrama Porcentual",col = "lightblue")
#Punto B:
resumen = summary(datos)
cat("Resúmene numérico:\n")
## Resúmene numérico:
resumen
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 5.00 15.00 61.00 54.13 87.50 99.00
cuartiles = quantile(datos)
cat("Cuartiles:\n")
## Cuartiles:
cuartiles
## 0% 25% 50% 75% 100%
## 5.0 15.0 61.0 87.5 99.0
#Punto C:
#¿Qué diferencias hay entre summary(x) y fivenum(x)?
#R// summary(x) ofrece una visión más completa y detallada de los datos,como minimo, maximo, media, medianay algunos cuartiles,mientras fivenum(x) proporciona un resumen más conciso y centrado en los valores clave
#2.5. R permite generar datos aleatorios con gran facilidad mediante instrucciones específicas que empiezan con “r” (rnorm, rpois, rbinom,…).
#Punto A:
valores = rnorm(100)
valores
## [1] -1.212129210 0.052501542 1.009220038 0.544924877 -0.840468724
## [6] -1.809487404 0.830858945 0.077932668 2.371589682 -1.368053663
## [11] 1.390044628 0.881587788 0.583423738 0.495481869 0.055355341
## [16] -0.824212714 0.610580592 0.127811504 0.682998221 1.673937486
## [21] 0.572035416 -0.276967257 -0.450884936 -0.363293596 -0.504744056
## [26] 0.289183517 0.156844350 -2.501060214 0.129335884 -0.382530578
## [31] -0.230546328 -0.920078763 -0.444942985 -0.003675489 -1.794493591
## [36] 0.119373542 0.011637302 -0.445577859 2.870224870 -1.754334990
## [41] 1.028970498 1.224674680 0.329938143 0.728665254 -0.020232944
## [46] -0.024872739 -0.428566690 -1.280246323 0.412929110 1.248016534
## [51] 0.043431847 -0.690563100 0.557342869 1.109076424 -0.106347755
## [56] -0.155082752 0.582555811 2.184078283 0.589717785 -0.206494432
## [61] -0.487144228 -0.398578739 1.438822915 1.150298120 0.805150268
## [66] 1.939517984 -0.486916532 0.533169226 0.038476285 0.675766742
## [71] 0.991323207 0.515865019 -0.776934105 0.390778092 -0.537621638
## [76] -0.139106391 0.395600396 1.448972023 -1.668250083 1.371752930
## [81] -0.425063888 -0.220688653 0.999539410 0.076374587 -0.627822451
## [86] 0.592015906 0.488748343 -0.330647053 -1.362311927 1.292310127
## [91] 0.327402493 0.054576947 0.757983959 0.264883760 0.398780237
## [96] 0.500350527 0.704684274 1.077104063 -0.128082450 -1.210000760
#Punto B:
hist(valores, main = "Histograma de valores aleatorios", xlab = "Valor", ylab = "Frecuencia",col = "lightblue")
# Repetir el proceso
for (i in 1:2) {
valores = rnorm(100)
hist(valores, main = paste("Histograma", i+1, "de valores aleatorios"), xlab = "Valor", ylab = "Frecuencia", col = "lightblue")
}
#Punto C:
resumen = summary(valores)
resumen
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -2.3660 -0.6603 -0.1066 -0.1142 0.5134 1.9609
#2.6. De forma similar al ejercicio genera 30 valores de una distribución binomial de parámetros(n=5 y p=0,9).
#Punto A:
valores_binomiales = rbinom(30, size = 5, prob = 0.9)
valores_binomiales
## [1] 4 4 5 5 5 3 4 4 4 4 4 3 3 4 5 4 5 4 4 5 5 5 5 4 5 5 4 4 4 5
barplot(table(valores_binomiales), main = "Distribución Binomial (n=5, p=0.9)", xlab = "Número de éxitos", ylab = "Frecuencia",col = "lightblue")
#Punto B:
summary(valores_binomiales)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 3.0 4.0 4.0 4.3 5.0 5.0
summary(valores)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## -2.3660 -0.6603 -0.1066 -0.1142 0.5134 1.9609
#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).
fallos = c(0, 1, 0, NA, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 3, 0, 0, 0, 0, 0, 2, 0, 1)
fallos
## [1] 0 1 0 NA 0 0 0 0 0 1 1 1 0 0 3 0 0 0 0 0 2 0 1
#Punto A:
# Diagrama de barras
barplot(table(fallos), main = "Número de fallos en intentos de puesta en órbita",
xlab = "Número de fallos", ylab = "Frecuencia",col = "lightblue")
# Diagrama boxplot
boxplot(fallos, main = "Número de fallos en intentos de puesta en órbita",
ylab = "Número de fallos" ,col = "lightblue")
#¿Qué representación es más adecuada una diagrama boxplot o un diagrama
de barras?
#Punto B:
tabla_fallos = table(fallos)
tabla_fallos
## fallos
## 0 1 2 3
## 15 5 1 1
# Calcular el número medio de errores
media_fallos = mean(fallos, na.rm = TRUE)
media_fallos
## [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:
#Punto A:
estudiante <- 1:10
p1 <- c(3, 3, 3, 4, 3, 4, 3, 4, 4, 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)
#Punto B:
tabla_p1 <- table(p1)
tabla_p2 <- table(p2)
tabla_p3 <- table(p3)
cat("Tabla para P1:\n")
## Tabla para P1:
tabla_p1
## p1
## 3 4
## 6 4
cat("Tabla para P2:\n")
## Tabla para P2:
tabla_p2
## p2
## 2 5
## 5 5
cat("Tabla para P3:\n")
## Tabla para P3:
tabla_p3
## p3
## 1 3
## 5 5
#Punto c:
tablap1_p2 <- table(p1, p2)
tablap1_p3 <- table(p1, p3)
tablap2_p3 <- table(p2, p3)
cat("Tabla de contingencia cruzada entre P1 y P2:\n")
## Tabla de contingencia cruzada entre P1 y P2:
tablap1_p2
## p2
## p1 2 5
## 3 3 3
## 4 2 2
cat("Tabla de contingencia cruzada entre P1 y P3:\n")
## Tabla de contingencia cruzada entre P1 y P3:
tablap1_p3
## p3
## p1 1 3
## 3 4 2
## 4 1 3
cat("Tabla de contingencia cruzada entre P2 y P3:\n")
## Tabla de contingencia cruzada entre P2 y P3:
tablap2_p3
## p3
## p2 1 3
## 2 3 2
## 5 2 3
#Punto D:
barplot(rbind(p2, p3), beside = TRUE, names.arg = estudiante, col = c("red", "purple"),
legend.text = c("P2", "P3"), main = "Diagrama de Barras Apiladas de P2 y P3")
#Punto E:
barplot(rbind(p1, p2, p3), beside = TRUE, names.arg = estudiante, col = c("yellow", "blue", "red"),
legend.text = c("P1", "P2", "P3"), main = "Diagrama de Barras CON las Tres Preguntas")
#2.9. Genera 2 vectores de 50 valores cada de una distribución normal
con rnorm (50).
vector1 = rnorm(50)
vector2 = rnorm(50)
vector1
## [1] 0.04853236 1.82993820 0.52098796 -1.09837110 0.56669734 -1.60681994
## [7] 0.26211263 0.44018885 0.12809689 -1.08835235 0.30040423 0.14368972
## [13] 1.12355928 0.54421843 0.61490217 0.07609931 0.15634227 2.18102349
## [19] 0.22120141 1.37420223 -0.31991209 2.07678041 -0.43414016 -0.19694045
## [25] -0.24629642 -1.84063612 0.39841428 0.64462505 1.16911279 0.36597404
## [31] 1.20749120 -0.07021500 1.42588232 -0.50805132 0.21231088 -1.01778175
## [37] 1.79571278 1.24137335 -0.96784306 -0.09642886 0.95523177 0.42835980
## [43] 2.28074288 0.71866245 -0.42894256 -0.45946186 -0.11986550 -0.68968530
## [49] -0.44482064 -1.11288324
vector2
## [1] 0.433426844 -0.640141055 1.435592076 0.547014447 0.796231553
## [6] -1.345007544 0.026728190 -0.107503493 0.353172526 -0.034413666
## [11] 0.028942454 0.118496651 0.332531389 -0.087374589 0.087503694
## [16] -1.607009203 0.710173339 0.527546631 2.135719397 0.657195219
## [21] 0.719947973 -0.668125091 -0.120246772 1.001561297 0.818195028
## [26] -0.856863033 -0.005244285 0.012128818 0.969399733 0.154515627
## [31] -0.725784844 -0.525740403 1.071868467 -0.055801820 0.024922019
## [36] 0.991173736 -0.462900095 1.648161790 -1.230189458 -1.160639570
## [41] 1.212396878 0.240486670 -0.588873041 0.966878007 -1.795968077
## [46] -0.930977216 0.755508794 0.750465231 -0.131336749 0.316300784
#Punto A:
prueba_V1 = shapiro.test(vector1)
prueba_V1
##
## Shapiro-Wilk normality test
##
## data: vector1
## W = 0.98389, p-value = 0.7229
prueba_V2 = shapiro.test(vector2)
prueba_V2
##
## Shapiro-Wilk normality test
##
## data: vector2
## W = 0.98647, p-value = 0.8324
#Punto B:
test_tStudent = t.test(vector1, vector2)
test_tStudent
##
## Welch Two Sample t-test
##
## data: vector1 and vector2
## t = 0.66198, df = 96.381, p-value = 0.5096
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.2374658 0.4751209
## sample estimates:
## mean of x mean of y
## 0.2541085 0.1352809
#No hay diferencia significativa
#2.10. Genera un vector de 50 valores por medio de rnorm y un vector de 50 valores por medio rbinom
v_normal = rnorm(50)
v_normal
## [1] 1.087471686 -1.735122589 -1.225846988 1.467780559 0.851207769
## [6] -1.261734580 0.186717740 -0.685784265 0.409701848 -1.353477756
## [11] -1.797607925 -2.390542309 0.594767946 -1.273827000 0.290297208
## [16] -0.249813751 -0.201078007 -1.149467652 -1.667100108 -0.549647757
## [21] -0.698725604 -1.562365076 0.241112058 -0.087284146 -0.723833374
## [26] 1.736895839 -1.671587772 0.031330529 1.414605029 0.798083196
## [31] 0.704035006 0.139174525 1.434197978 1.347238488 -0.415399309
## [36] -0.522458640 -1.202433624 -0.305968986 -0.991394632 -1.015887520
## [41] -0.382766528 0.001306738 -1.674833048 -0.163124254 1.012692045
## [46] 0.234066061 -1.078873842 -1.011732003 0.133607321 0.718606483
v_binomial = rbinom(50, size = 1, prob = 0.5)
v_binomial
## [1] 0 0 1 1 0 0 1 1 0 0 1 0 0 0 1 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0
## [39] 1 0 1 1 0 0 1 0 0 1 0 0
#Punto C:
prueba_vn = shapiro.test(v_normal)
prueba_vn
##
## Shapiro-Wilk normality test
##
## data: v_normal
## W = 0.97602, p-value = 0.3987
prueba_vb = shapiro.test(v_binomial)
prueba_vb
##
## Shapiro-Wilk normality test
##
## data: v_binomial
## W = 0.61555, p-value = 3.338e-10
#los datos en v_binomial no siguen una distribución normal.
#Punto D:
test_tStudent2 = t.test(v_normal, v_binomial)
test_tStudent2
##
## Welch Two Sample t-test
##
## data: v_normal and v_binomial
## t = -4.1407, df = 70.384, p-value = 9.48e-05
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.9842366 -0.3443563
## sample estimates:
## mean of x mean of y
## -0.2842965 0.3800000