A

x <- c(1, 3, 5, 7, 9)
x
## [1] 1 3 5 7 9

B

y <- c(2, 4, 6, 7, 11, 12)
x
## [1] 1 3 5 7 9

c

x + 1
## [1]  2  4  6  8 10

D

y*2
## [1]  4  8 12 14 22 24

E

length(x)
## [1] 5
length(y)
## [1] 6

F

c (x,y)
##  [1]  1  3  5  7  9  2  4  6  7 11 12

G

sum(x>5) 
## [1] 2
sum(x[x>5])
## [1] 16

H

sum(x > 5 | x < 3)
## [1] 3

i

y[2]
## [1] 4

j

y[-2]
## [1]  2  6  7 11 12

k

y[x]
## [1]  2  6 11 NA NA

l

datos <- c(1, NA, "Hola", NA, 3.14)

m

y[y>=8]
## [1] 11 12

2.2 A

millas <- c(65241, 65665, 65998, 66014, 66547, 66857, 67025, 67447, 66958, 67002)

B

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

C

diferencia_millas <- diff(millas)
diferencia_millas
## [1]  424  333   16  533  310  168  422 -489   44

D

# Función para calcular la moda
moda_millas <- function(x) { unique(sort(x))[which.max(tabulate(match(x, unique(x))))] }

# Datos de kilometraje recorrido
millas <- c(65241, 65665, 65998, 66014, 66547, 66857, 67025, 67447, 66958, 67002)

# Medidas de tendencia central
media_millas <- mean(millas)
mediana_millas <- median(millas)
moda_millas <- moda_millas(millas)

# Medidas de dispersión
varianza_millas <- var(millas)
desviacion_estandar_millas <- sd(millas)
IQR_millas <- IQR(millas)

# Medidas de distribución
hist(millas, main = "Histograma de millas recorridas")

qqnorm(millas, main = "Diagrama Q-Q para millas")
density(millas)
## 
## Call:
##  density.default(x = millas)
## 
## Data: millas (10 obs.);  Bandwidth 'bw' = 402.8
## 
##        x               y            
##  Min.   :64033   Min.   :1.140e-06  
##  1st Qu.:65188   1st Qu.:3.527e-05  
##  Median :66344   Median :2.057e-04  
##  Mean   :66344   Mean   :2.160e-04  
##  3rd Qu.:67500   3rd Qu.:3.607e-04  
##  Max.   :68655   Max.   :5.118e-04
title("Densidad de probabilidad de millas")

# Imprimir estadísticas resumen
print("Media de millas:")
## [1] "Media de millas:"
print(media_millas)
## [1] 66475.4
print("Mediana de millas:")
## [1] "Mediana de millas:"
print(format(mediana_millas, digits = 2))
## [1] "66702"
print("Moda de millas:")
## [1] "Moda de millas:"
print(moda_millas)
## [1] 65241
# Variance (formatting)
print(sprintf("Varianza de millas: %.2f", varianza_millas))
## [1] "Varianza de millas: 503146.04"
# Standard deviation (formatting)
print(sprintf("Desviación estándar de millas: %.2f", desviacion_estandar_millas))
## [1] "Desviación estándar de millas: 709.33"
# IQR (formatting)
print(sprintf("Rango intercuartílico (IQR) de millas: %.2f", IQR_millas))
## [1] "Rango intercuartílico (IQR) de millas: 989.00"

2.3 A

# Datos de gastos telefónicos
gastos <- c(47, 32, 40, 36, 49)
gastos
## [1] 47 32 40 36 49

B

media_gastos <- mean(gastos)
print(sprintf("El gasto promedio por mes es: %.2f euros", media_gastos))
## [1] "El gasto promedio por mes es: 40.80 euros"

C

cantidad_minima <- min(gastos)
cantidad_maxima <- max(gastos)
print(sprintf("La cantidad mínima pagada ha sido: %.2f euros", cantidad_minima))
## [1] "La cantidad mínima pagada ha sido: 32.00 euros"
print(sprintf("La cantidad máxima pagada ha sido: %.2f euros", cantidad_maxima))
## [1] "La cantidad máxima pagada ha sido: 49.00 euros"

D

# Datos de gastos telefónicos
pagos <- c(47, 32, 40, 36, 49, 31, 49, 30, 49, 35, 48, 32)

# Nombres de los meses
meses <- c("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", 
            "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")

# Imprimir el pago de cada mes
for (i in 1:length(pagos)) {
  print(paste0("Pago en ", meses[i], ":", pagos[i], " euros"))
}
## [1] "Pago en Enero:47 euros"
## [1] "Pago en Febrero:32 euros"
## [1] "Pago en Marzo:40 euros"
## [1] "Pago en Abril:36 euros"
## [1] "Pago en Mayo:49 euros"
## [1] "Pago en Junio:31 euros"
## [1] "Pago en Julio:49 euros"
## [1] "Pago en Agosto:30 euros"
## [1] "Pago en Septiembre:49 euros"
## [1] "Pago en Octubre:35 euros"
## [1] "Pago en Noviembre:48 euros"
## [1] "Pago en Diciembre:32 euros"

E

meses_mayores_40 <- which(pagos > 40)
print("Meses en que se pagó más de 40 euros:")
## [1] "Meses en que se pagó más de 40 euros:"
print(meses[meses_mayores_40])
## [1] "Enero"      "Mayo"       "Julio"      "Septiembre" "Noviembre"

F

# Datos de gastos telefónicos
pagos <- c(47, 32, 40, 36, 49, 31, 49, 30, 49, 35, 48, 32)

# Nombres de los meses
meses <- c("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", 
            "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")

# Calcular el costo total
costo_total <- sum(pagos)

# Calcular el gasto en pagos mayores a 40 euros
gasto_mayor_40 <- sum(pagos[pagos > 40])

# Calcular el porcentaje del gasto total representado por pagos mayores a 40 euros
porcentaje_mayor_40 <- round((gasto_mayor_40 / costo_total) * 100, 2)

# Imprimir el gasto y el porcentaje
print(paste("Gasto total en pagos mayores a 40 euros:", gasto_mayor_40, "euros"))
## [1] "Gasto total en pagos mayores a 40 euros: 242 euros"
print(paste0("Porcentaje del gasto total representado por pagos mayores a 40 euros:", 
              porcentaje_mayor_40, "%"))
## [1] "Porcentaje del gasto total representado por pagos mayores a 40 euros:50.63%"
# Imprimir el resumen estadístico de los gastos
print("Resumen estadístico de los gastos:")
## [1] "Resumen estadístico de los gastos:"
print(summary(pagos))
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   30.00   32.00   38.00   39.83   48.25   49.00
# Imprimir el histograma de los gastos
hist(pagos, main="Histograma de gastos telefónicos", xlab="Gastos (euros)")

# Imprimir el boxplot de los gastos
boxplot(pagos, main="Boxplot de gastos telefónicos", ylab="Gastos (euros)")

2.4 A

# Se crea un vector con las categorías (en este caso, no hay categorías explícitas, se utilizan los valores como categorías)
categorias <- datos

# Se crea la tabla de frecuencias
tabla_frecuencias <- table(categorias)

# Se calcula la frecuencia relativa (porcentaje)
tabla_porcentajes <- prop.table(tabla_frecuencias) * 100

# Se crea el diagrama de porcentajes (barplot)
barplot(tabla_porcentajes, main = "Diagrama de porcentajes", col = "skyblue")

B

# Resumen de cinco números con `fivenum()`
resumen_cinco_num <- as.numeric(fivenum(pagos))

# Imprimir el resumen de cinco números
print(resumen_cinco_num)
## [1] 30.0 32.0 38.0 48.5 49.0

2.5 A

# Generar 100 valores aleatorios de una distribución normal con media 0 y desviación estándar 1
datos_normales <- rnorm(100, mean = 0, sd = 1)
datos_normales
##   [1] -0.143703181 -0.143027140  0.274189003  0.470390317 -1.180067605
##   [6]  1.581607666 -0.429175871 -0.897618729  1.416398586 -1.407341896
##  [11] -0.700182813 -0.454318738  0.552845842  0.201719165  0.596828640
##  [16]  2.060746850 -0.541491425 -0.896463148 -2.299639957  1.351555552
##  [21]  0.869307708 -0.982630017 -1.314797969  0.701737364  0.479494234
##  [26]  0.051367665 -1.633766295 -0.854460368 -0.156959537  0.222323247
##  [31]  0.451577470 -0.065557577 -1.593120072 -0.240929068  0.378872744
##  [36] -0.775819732 -0.563104877  0.008969144  1.683791300  0.956746284
##  [41]  1.835230005  0.370638678 -0.631671987 -0.918558701  0.431107463
##  [46] -0.746192854  0.548624245 -0.639974092 -0.592973062 -0.313855969
##  [51] -1.113678689 -0.132772880 -0.694237143 -1.770072403 -2.247874668
##  [56] -0.820021005 -0.003420763 -0.222490286 -1.334534748  0.321283074
##  [61] -0.236409233  0.988738016 -1.230722742  0.982069425  0.295820976
##  [66] -0.865084802  0.011062417  1.819935198 -1.862967251  0.049142548
##  [71] -0.090114724 -0.347808836  0.077646054 -0.848577001  0.512392001
##  [76]  0.129450358 -1.853260643 -0.626399503  0.426955609  0.096846582
##  [81] -0.474658755 -0.870103813  0.190097495 -0.202617920  1.154556655
##  [86] -0.456757514 -1.402381498 -1.209228061  0.065870002  0.738036307
##  [91] -1.132600471  1.520233318  0.669872719 -1.990948245 -0.420123056
##  [96] -0.521822318  1.499391469  1.455018144  1.311476107  0.124331363

B

# Crear un histograma de los datos generados
hist(datos_normales, main = "Histograma de datos normales (primera ejecución)")

# Repetir el proceso dos veces más para observar la variabilidad
datos_normales2 <- rnorm(100, mean = 0, sd = 1)
hist(datos_normales2, main = "Histograma de datos normales (segunda ejecución)")

datos_normales3 <- rnorm(100, mean = 0, sd = 1)
hist(datos_normales3, main = "Histograma de datos normales (tercera ejecución)")

C

# Resumen numérico de los datos generados
resumen_datos <- summary(datos_normales)
print(resumen_datos)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## -2.2996 -0.8272 -0.1434 -0.1416  0.4563  2.0607

2.6 A

# Generar 30 valores aleatorios de una distribución binomial con n=5 y p=0.9
datos_binomiales <- rbinom(30, size = 5, prob = 0.9)

# Diagrama de barras para representar los resultados
barplot(datos_binomiales, main = "Distribución binomial (diagrama de barras)")

# Diagrama de pastel para representar los resultados
pie(datos_binomiales, labels = paste0("Éxitos (", datos_binomiales, ")", sep = ": "), 
    main = "Distribución binomial (diagrama de pastel)")

B

# Resumen numérico de los datos binomiales
resumen_datos_binomiales <- summary(datos_binomiales)
print(resumen_datos_binomiales)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   3.000   4.000   5.000   4.433   5.000   5.000
# Comparación con el resumen del ejercicio anterior
# El resumen del ejercicio anterior corresponde a una distribución normal.
# Los resúmenes de distribuciones aleatorias varían entre sí por naturaleza.
# No se puede esperar que los resúmenes numéricos sean exactamente iguales.

2.7 A

# Datos de fallos en lanzamientos de satélite
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)

# Generar el diagrama de barras
barplot(fallos, main = "Número de fallos en lanzamientos de satélite (diagrama de barras)")

B

# Tabular los datos
tabla_fallos <- table(fallos)

# Calcular el número medio de errores
media_fallos <- mean(fallos, na.rm=TRUE)

# Imprimir el resultado
print(paste("Número medio de fallos:", media_fallos))
## [1] "Número medio de fallos: 0.454545454545455"

2.8 A

# Leer los datos desde el teclado
datos <- read.table(text = "
Estudiante P1 P2 P3
1 3 5 1
2 3 3 3
3 2 2 1
4 2 2 3
5 3 5 3
6 2 5 3
7 3 2 1
8 5 5 1
9 2 2 1
10 3 2 1", header = TRUE)

# Mostrar los datos leídos
print(datos)
##    Estudiante P1 P2 P3
## 1           1  3  5  1
## 2           2  3  3  3
## 3           3  2  2  1
## 4           4  2  2  3
## 5           5  3  5  3
## 6           6  2  5  3
## 7           7  3  2  1
## 8           8  5  5  1
## 9           9  2  2  1
## 10         10  3  2  1

B

# Crear tabla de frecuencia para P1
tabla_p1 <- table( datos$P1)

# Crear tabla de frecuencia para P2
tabla_p2 <- table( datos$P2)

# Crear tabla de frecuencia para P3
tabla_p3 <- table(datos$P3)
tabla_p1
## 
## 2 3 5 
## 4 5 1
tabla_p2
## 
## 2 3 5 
## 5 1 4
tabla_p3
## 
## 1 3 
## 6 4

C

tabla_p1 <- table(datos$P1)
tabla_p2 <- table(datos$P2)
tabla_p3 <- table(datos$P3)
tabla_p1_p2 <- table(datos$P1, datos$P2)
tabla_p1_p3 <- table(datos$P1, datos$P3)
tabla_p2_p3 <- table(datos$P2, datos$P3)
tabla_p1_p2_p3 <- table(datos)
tabla_p1_p2
##    
##     2 3 5
##   2 3 0 1
##   3 2 1 2
##   5 0 0 1
tabla_p1_p3
##    
##     1 3
##   2 2 2
##   3 3 2
##   5 1 0
tabla_p2_p3
##    
##     1 3
##   2 4 1
##   3 0 1
##   5 2 2
tabla_p1_p2_p3
## , , P2 = 2, P3 = 1
## 
##           P1
## Estudiante 2 3 5
##         1  0 0 0
##         2  0 0 0
##         3  1 0 0
##         4  0 0 0
##         5  0 0 0
##         6  0 0 0
##         7  0 1 0
##         8  0 0 0
##         9  1 0 0
##         10 0 1 0
## 
## , , P2 = 3, P3 = 1
## 
##           P1
## Estudiante 2 3 5
##         1  0 0 0
##         2  0 0 0
##         3  0 0 0
##         4  0 0 0
##         5  0 0 0
##         6  0 0 0
##         7  0 0 0
##         8  0 0 0
##         9  0 0 0
##         10 0 0 0
## 
## , , P2 = 5, P3 = 1
## 
##           P1
## Estudiante 2 3 5
##         1  0 1 0
##         2  0 0 0
##         3  0 0 0
##         4  0 0 0
##         5  0 0 0
##         6  0 0 0
##         7  0 0 0
##         8  0 0 1
##         9  0 0 0
##         10 0 0 0
## 
## , , P2 = 2, P3 = 3
## 
##           P1
## Estudiante 2 3 5
##         1  0 0 0
##         2  0 0 0
##         3  0 0 0
##         4  1 0 0
##         5  0 0 0
##         6  0 0 0
##         7  0 0 0
##         8  0 0 0
##         9  0 0 0
##         10 0 0 0
## 
## , , P2 = 3, P3 = 3
## 
##           P1
## Estudiante 2 3 5
##         1  0 0 0
##         2  0 1 0
##         3  0 0 0
##         4  0 0 0
##         5  0 0 0
##         6  0 0 0
##         7  0 0 0
##         8  0 0 0
##         9  0 0 0
##         10 0 0 0
## 
## , , P2 = 5, P3 = 3
## 
##           P1
## Estudiante 2 3 5
##         1  0 0 0
##         2  0 0 0
##         3  0 0 0
##         4  0 0 0
##         5  0 1 0
##         6  1 0 0
##         7  0 0 0
##         8  0 0 0
##         9  0 0 0
##         10 0 0 0

D

barplot(height = c(datos[, "P2"][1:10], datos[, "P3"][1:10]),
        beside = FALSE,
        col = c("blue", "red"),
        names.arg = rep(1:10, 2),
        xlab = "Estudiante",
        ylab = "Respuesta",
        main = "Diagrama de barras apiladas de las preguntas 2 y 3")

E

# Crear una matriz con los valores numéricos de las respuestas
matriz_respuestas <- matrix(c(datos$P1, datos$P2, datos$P3), nrow = 3, byrow = TRUE)

# Crear el diagrama de barras
barplot(height = matriz_respuestas,
        beside = TRUE,
        col = c("blue", "red", "green"),
        names.arg = rep(1:10, 3),
        xlab = "Estudiante",
        ylab = "Respuesta",
        main = "Diagrama de barras con las tres preguntas simultáneamente")

2.9 A

# Generar vectores
set.seed(123)
vec1 <- rnorm(50)
vec2 <- rnorm(50)

# Prueba de normalidad
shapiro_test_vec1 <- shapiro.test(vec1)
shapiro_test_vec2 <- shapiro.test(vec2)

# Imprimir resultados
cat("Prueba de Shapiro-Wilk para vec1:\n")
## Prueba de Shapiro-Wilk para vec1:
print(shapiro_test_vec1)
## 
##  Shapiro-Wilk normality test
## 
## data:  vec1
## W = 0.98928, p-value = 0.9279
cat("\nPrueba de Shapiro-Wilk para vec2:\n")
## 
## Prueba de Shapiro-Wilk para vec2:
print(shapiro_test_vec2)
## 
##  Shapiro-Wilk normality test
## 
## data:  vec2
## W = 0.99073, p-value = 0.9618

B

# Prueba t-student
t_test <- t.test(vec1, vec2)

# Imprimir resultados
cat("Prueba t-student:\n")
## Prueba t-student:
print(t_test)
## 
##  Welch Two Sample t-test
## 
## data:  vec1 and vec2
## t = -0.61157, df = 97.951, p-value = 0.5422
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.4754485  0.2514391
## sample estimates:
##  mean of x  mean of y 
## 0.03440355 0.14640827

2.10 C

# Generar vector de 50 valores con rnorm
set.seed(123)
vec_norm <- rnorm(50)

# Realizar prueba de normalidad con Shapiro-Wilk
shapiro_test_norm <- shapiro.test(vec_norm)

# Imprimir resultados
print("Prueba de normalidad de vec_norm:")
## [1] "Prueba de normalidad de vec_norm:"
print(shapiro_test_norm)
## 
##  Shapiro-Wilk normality test
## 
## data:  vec_norm
## W = 0.98928, p-value = 0.9279
# Generar vector de 50 valores con rbinom
set.seed(123)
vec_rbinom <- rbinom(50, 1, 0.5)

# Realizar prueba de normalidad con Shapiro-Wilk
shapiro_test_rbinom <- shapiro.test(vec_rbinom)

# Imprimir resultados
print("Prueba de normalidad de vec_rbinom:")
## [1] "Prueba de normalidad de vec_rbinom:"
print(shapiro_test_rbinom)
## 
##  Shapiro-Wilk normality test
## 
## data:  vec_rbinom
## W = 0.63682, p-value = 7.144e-10

D

# Realizar prueba t-student
t_test <- t.test(vec_norm, vec_rbinom)

# Imprimir resultados
print("Prueba t-student:")
## [1] "Prueba t-student:"
print(t_test)
## 
##  Welch Two Sample t-test
## 
## data:  vec_norm and vec_rbinom
## t = -3.1216, df = 75.791, p-value = 0.002546
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -0.7626745 -0.1685184
## sample estimates:
##  mean of x  mean of y 
## 0.03440355 0.50000000