Actividad 2

¿Cuál será el resultado de ejecutar las siguientes instrucciones?

punto A:

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?

R// si estás trabajando con datos numéricos y quieres explorar la distribución y la presencia de valores atípicos, un diagrama de caja es más adecuado. Por otro lado, si estás analizando datos categóricos o quieres visualizar frecuencias o proporciones, un diagrama de barras sería más apropiado.

#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

los datos en v_normal se ajustan a una distribución normal.

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

R// Dado que el valor de p es inferior al nivel de significancia establecido en 0.05, tenemos suficiente evidencia para rechazar la hipótesis nula que afirma que no hay diferencia significativa entre las medias de los dos grupos. Por lo tanto, podemos concluir que existen diferencias significativas entre los dos conjuntos de datos en este caso.