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