library(UsingR)
## Loading required package: MASS
## Loading required package: HistData
## Loading required package: Hmisc
##
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
##
## format.pval, units
library(MASS)
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
#Ejercicio 2.1
# a) Número de conjuntos de datos en el paquete
num_datasets <- length(data(package="UsingR")$results[, "Item"])
# Imprimir el número de conjuntos de datos
cat("El paquete UsingR contiene", num_datasets, "conjuntos de datos.\n")
## El paquete UsingR contiene 123 conjuntos de datos.
You can also embed plots, for example:
#Ejercicio 2.1
#b)# Gráficos de histograma y boxplot para los conjuntos de datos "bumpers", "firstchi" y "math"
par(mfrow=c(3, 2)) # Organizar las gráficas en 3 filas y 2 columnas
# Histograma para "bumpers"
hist(bumpers, main="Histograma - bumpers")
# Boxplot para "bumpers"
boxplot(bumpers, main="Boxplot - bumpers")
# Histograma para "firstchi"
hist(firstchi, main="Histograma - firstchi")
# Boxplot para "firstchi"
boxplot(firstchi, main="Boxplot - firstchi")
# Histograma para "math"
hist(math, main="Histograma - math")
# Boxplot para "math"
boxplot(math, main="Boxplot - math")
Note that the echo = FALSE parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.
#Ejercicio 2.1
#c)# Estimación visual y cálculo de medias, medianas y desviaciones estándar
# Estimación visual
cat("Estimación visual de los datos:\n")
## Estimación visual de los datos:
print(summary(bumpers))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 618 1478 2129 2122 2774 3298
print(summary(firstchi))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 14.00 20.00 23.00 23.98 26.00 42.00
print(summary(math))
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 38.00 49.00 54.00 54.90 61.75 75.00
# Cálculo de medias, medianas y desviaciones estándar
cat("\nCálculos estadísticos:\n")
##
## Cálculos estadísticos:
cat("Media de bumpers:", mean(bumpers), "\n")
## Media de bumpers: 2122.478
cat("Mediana de bumpers:", median(bumpers), "\n")
## Mediana de bumpers: 2129
cat("Desviación estándar de bumpers:", sd(bumpers), "\n")
## Desviación estándar de bumpers: 798.4574
cat("Media de firstchi:", mean(firstchi), "\n")
## Media de firstchi: 23.97701
cat("Mediana de firstchi:", median(firstchi), "\n")
## Mediana de firstchi: 23
cat("Desviación estándar de firstchi:", sd(firstchi), "\n")
## Desviación estándar de firstchi: 6.254258
cat("Media de math:", mean(math), "\n")
## Media de math: 54.9
cat("Mediana de math:", median(math), "\n")
## Mediana de math: 54
cat("Desviación estándar de math:", sd(math), "\n")
## Desviación estándar de math: 9.746264
#Ejercicio 2.2 a)#Generar datos de ejemplo (reemplaza esto con tus propios datos)
set.seed(123)
datos <- rnorm(1000, mean = 10, sd = 2)
# Cargar la librería necesaria para gráficos
library(ggplot2)
# Crear un histograma
histograma <- ggplot(data.frame(x = datos), aes(x = x)) +
geom_histogram(aes(y = ..density..), fill = "skyblue", color = "black", bins = 30) +
geom_density(alpha = 0.5, fill = "orange") +
labs(title = "Histograma y gráfico de densidad", x = "Valores", y = "Densidad")
# Mostrar el gráfico
print(histograma)
## Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(density)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
#Ejercicio 2.2 b)# Generar datos de ejemplo (reemplaza esto con tus propios datos)
set.seed(123)
datos <- c(rnorm(50, mean = 10, sd = 2), 25) # Introducir un outlier
# Crear el diagrama de caja
boxplot(datos, main = "Diagrama de caja", ylab = "Valores")
# Identificar los outliers
outliers <- boxplot.stats(datos)$out
if (length(outliers) > 0) {
cat("Los outliers son:", outliers, "\n")
# Ordenar los outliers
outliers_ordenados <- sort(outliers)
# Segundo menor outlier
segundo_menor_outlier <- outliers_ordenados[2]
cat("El segundo menor outlier es:", segundo_menor_outlier)
} else {
cat("No hay outliers en los datos.")
}
## Los outliers son: 25
## El segundo menor outlier es: NA
#Ejercicio 2.2 c)# Generar datos de ejemplo (reemplaza esto con tus propios datos)
set.seed(123)
datos <- rnorm(100, mean = 10, sd = 2)
# Calcular los estadísticos del diagrama de caja
boxplot_stats <- boxplot.stats(datos)
# Obtener los valores de la primera bisagra (bisagra inferior) y la cuarta bisagra (bisagra superior)
primera_bisagra <- boxplot_stats$stats[2]
cuarta_bisagra <- boxplot_stats$stats[4]
# Filtrar los datos para conservar solo los que están por encima de la primera bisagra y por debajo de la cuarta
brightness.sin <- datos[datos > primera_bisagra & datos < cuarta_bisagra]
# Imprimir los resultados
cat("La primera bisagra es:", primera_bisagra, "\n")
## La primera bisagra es: 9.006645
cat("La cuarta bisagra es:", cuarta_bisagra, "\n")
## La cuarta bisagra es: 11.39
cat("La nueva variable brightness.sin contiene los valores que no son considerados atípicos.")
## La nueva variable brightness.sin contiene los valores que no son considerados atípicos.
#Ejercicio 2.3 a)
# Cargar el paquete MASS
library(MASS)
# Ver la estructura de la base de datos UScereal
str(UScereal)
## 'data.frame': 65 obs. of 11 variables:
## $ mfr : Factor w/ 6 levels "G","K","N","P",..: 3 2 2 1 2 1 6 4 5 1 ...
## $ calories : num 212 212 100 147 110 ...
## $ protein : num 12.12 12.12 8 2.67 2 ...
## $ fat : num 3.03 3.03 0 2.67 0 ...
## $ sodium : num 394 788 280 240 125 ...
## $ fibre : num 30.3 27.3 28 2 1 ...
## $ carbo : num 15.2 21.2 16 14 11 ...
## $ sugars : num 18.2 15.2 0 13.3 14 ...
## $ shelf : int 3 3 3 1 2 3 1 3 2 1 ...
## $ potassium: num 848.5 969.7 660 93.3 30 ...
## $ vitamins : Factor w/ 3 levels "100%","enriched",..: 2 2 2 2 2 2 2 2 2 2 ...
#Ejercicio 2.3 b)#
# Investigar algunas asociaciones entre las variables
# i. La relación entre fat y vitamins
plot(UScereal$fat, UScereal$vitamins, xlab="Fat", ylab="Vitamins", main="Fat vs Vitamins")
# ii. La relación entre fat y shelf
boxplot(fat ~ shelf, data=UScereal, xlab="Shelf", ylab="Fat", main="Fat vs Shelf")
# iii. La relación entre carbohydrates y sugars
plot(UScereal$carbo, UScereal$sugars, xlab="Carbohydrates", ylab="Sugars", main="Carbohydrates vs Sugars")
# iv. La relación entre fibre y sugars
plot(UScereal$fibre, UScereal$sugars, xlab="Fibre", ylab="Sugars", main="Fibre vs Sugars")
# v. La relación entre fibre y shelf
boxplot(fibre ~ shelf, data=UScereal, xlab="Shelf", ylab="Fibre", main="Fibre vs Shelf")
# vi. La relación entre sodium y sugars
plot(UScereal$sodium, UScereal$sugars, xlab="Sodium", ylab="Sugars", main="Sodium vs Sugars")
#Ejercicio 2.4 a)
# Datos de ejemplo (puedes reemplazarlos con tus propios datos)
peso_cerebro <- c(120, 130, 140, 150, 160) # Peso del cerebro en gramos
peso_corporal <- c(50, 55, 60, 65, 70) # Peso corporal en kilogramos
# Calcula la relación entre el peso del cerebro y el peso corporal
relacion_peso <- peso_cerebro / peso_corporal
# Muestra los resultados
cat("Relación entre el peso del cerebro y el peso corporal:\n")
## Relación entre el peso del cerebro y el peso corporal:
print(relacion_peso)
## [1] 2.400000 2.363636 2.333333 2.307692 2.285714
#Ejercicio 2.4b )
# Ejemplo de datos (puedes reemplazar estos valores con tus propios datos)
peso_corporal <- c(2, 5, 6, 3, 4) # Peso corporal en kilogramos
peso_cerebro <- c(1, 7, 3, 2, 1) # Peso del cerebro en gramos
# Crear el gráfico de dispersión
plot(peso_corporal, peso_cerebro,
main="Relación entre Peso Corporal y Peso del Cerebro",
xlab="Peso Corporal (kg)",
ylab="Peso del Cerebro (g)",
pch=19, col="blue")
# Agregar una línea de regresión (opcional)
abline(lm(peso_cerebro ~ peso_corporal), col="red")
# Ejercicio 2.4 c)
# Ejemplo de datos (puedes reemplazar estos valores con tus propios datos)
peso_corporal <- c(2, 5, 6, 3, 4) # Peso corporal en kilogramos
peso_cerebro <- c(1, 7, 3, 2, 1) # Peso del cerebro en gramos
# Transformar los datos mediante la función log
log_peso_corporal <- log(peso_corporal)
log_peso_cerebro <- log(peso_cerebro)
# Crear el gráfico de dispersión con los datos transformados
plot(log_peso_corporal, log_peso_cerebro,
main="Relación entre log(Peso Corporal) y log(Peso del Cerebro)",
xlab="log(Peso Corporal)",
ylab="log(Peso del Cerebro)",
pch=19, col="blue")
# Agregar una línea de regresión (opcional)
abline(lm(log_peso_cerebro ~ log_peso_corporal), col="red")
#Ejercicio 2.5 a)
# Instala o carga el paquete UsingR (si aún no lo tienes instalado)
# install.packages("UsingR")
library(UsingR)
# Carga la base de datos emissions
data(emissions)
# Explora la estructura de la base de datos
str(emissions)
## 'data.frame': 26 obs. of 3 variables:
## $ GDP : num 8083000 3080000 1740000 1320000 1242000 ...
## $ perCapita: num 29647 24409 21197 22381 21010 ...
## $ CO2 : num 6750 1320 1740 550 675 540 2000 700 370 480 ...
# Visualiza las primeras filas de la base de datos
head(emissions)
## GDP perCapita CO2
## UnitedStates 8083000 29647 6750
## Japan 3080000 24409 1320
## Germany 1740000 21197 1740
## France 1320000 22381 550
## UnitedKingdom 1242000 21010 675
## Italy 1240000 21856 540
# Estudia la relación entre las variables GDP, perCapita y CO2
# Puedes usar gráficos de dispersión, correlaciones u otros métodos
# Ejemplo: Gráfico de dispersión entre GDP y CO2
plot(emissions$GDP, emissions$CO2,
main="Relación entre GDP y Emisiones de CO2",
xlab="GDP (Producto Interno Bruto)",
ylab="CO2 (Emisiones de CO2)",
pch=19, col="blue")
# Ejemplo: Correlación entre perCapita y CO2
cor(emissions$perCapita, emissions$CO2)
## [1] 0.2757962
# También puedes ajustar modelos de regresión para predecir las emisiones de CO2
# a partir de las otras variables.
# ¡Explora más y diviértete analizando los datos! 📊🌍👍
#Ejercicio 2.5 b)
# Carga la base de datos emissions (si aún no lo has hecho)
library(UsingR)
data(emissions)
# Crear un modelo de regresión lineal
model <- lm(CO2 ~ GDP + perCapita, data = emissions)
# Resumen del modelo
summary(model)
##
## Call:
## lm(formula = CO2 ~ GDP + perCapita, data = emissions)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1037.3 -167.4 10.8 153.2 1052.0
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 5.100e+02 2.044e+02 2.495 0.0202 *
## GDP 8.406e-04 5.198e-05 16.172 4.68e-14 ***
## perCapita -3.039e-02 1.155e-02 -2.631 0.0149 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 382.8 on 23 degrees of freedom
## Multiple R-squared: 0.9253, Adjusted R-squared: 0.9188
## F-statistic: 142.5 on 2 and 23 DF, p-value: 1.102e-13
# Coeficientes del modelo
coef(model)
## (Intercept) GDP perCapita
## 5.099797e+02 8.406227e-04 -3.039138e-02
# Predicciones para nuevas observaciones
new_data <- data.frame(GDP = c(5000, 8000), perCapita = c(50, 80))
predicted_CO2 <- predict(model, newdata = new_data)
# Visualización de los resultados
plot(emissions$GDP, emissions$CO2, pch = 19, col = "blue",
main = "Relación entre GDP y Emisiones de CO2",
xlab = "GDP (Producto Interno Bruto)",
ylab = "CO2 (Emisiones de CO2)")
abline(model, col = "red", lwd = 2)
## Warning in abline(model, col = "red", lwd = 2): only using the first two of 3
## regression coefficients
points(new_data$GDP, predicted_CO2, pch = 19, col = "green")
legend("topright", legend = c("Datos observados", "Línea de regresión", "Predicciones"),
col = c("blue", "red", "green"), pch = 19)
#Ejercicio 2.5 c)
# Carga la base de datos emissions (si aún no lo has hecho)
library(UsingR)
data(emissions)
# Crea un modelo de regresión lineal con los outliers
model_with_outliers <- lm(CO2 ~ GDP + perCapita, data = emissions)
# Identifica los outliers utilizando la distancia de Cook
outliers <- which(cooks.distance(model_with_outliers) > 4/nrow(emissions))
# Imprime los índices de los outliers
cat("Índices de los outliers:", outliers, "\n")
## Índices de los outliers: 1 2 7
# Elimina los outliers del conjunto de datos
emissions_no_outliers <- emissions[-outliers, ]
# Crea un nuevo modelo sin los outliers
model_no_outliers <- lm(CO2 ~ GDP + perCapita, data = emissions_no_outliers)
# Resumen del nuevo modelo
summary(model_no_outliers)
##
## Call:
## lm(formula = CO2 ~ GDP + perCapita, data = emissions_no_outliers)
##
## Residuals:
## Min 1Q Median 3Q Max
## -357.01 -72.86 -17.64 44.02 519.82
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.056e+02 1.123e+02 1.831 0.0821 .
## GDP 7.151e-04 8.823e-05 8.106 9.51e-08 ***
## perCapita -1.083e-02 6.385e-03 -1.697 0.1053
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 189.5 on 20 degrees of freedom
## Multiple R-squared: 0.7699, Adjusted R-squared: 0.7469
## F-statistic: 33.45 on 2 and 20 DF, p-value: 4.166e-07
# Coeficientes del nuevo modelo
coef(model_no_outliers)
## (Intercept) GDP perCapita
## 2.055512e+02 7.151113e-04 -1.083457e-02
# Predicciones para nuevas observaciones sin outliers
new_data_no_outliers <- data.frame(GDP = c(5000, 8000), perCapita = c(50, 80))
predicted_CO2_no_outliers <- predict(model_no_outliers, newdata = new_data_no_outliers)
# Visualiza los resultados sin outliers
plot(emissions_no_outliers$GDP, emissions_no_outliers$CO2, pch = 19, col = "blue",
main = "Relación entre GDP y Emisiones de CO2 (Sin Outliers)",
xlab = "GDP (Producto Interno Bruto)",
ylab = "CO2 (Emisiones de CO2)")
abline(model_no_outliers, col = "red", lwd = 2)
## Warning in abline(model_no_outliers, col = "red", lwd = 2): only using the
## first two of 3 regression coefficients
points(new_data_no_outliers$GDP, predicted_CO2_no_outliers, pch = 19, col = "green")
legend("topright", legend = c("Datos Observados", "Línea de Regresión", "Predicciones"),
col = c("blue", "red", "green"), pch = 19)
#Ejercicio 2.6 a)
# Instala el paquete MASS si aún no lo has instalado
if (!requireNamespace("MASS", quietly = TRUE)) {
install.packages("MASS")
}
# Carga el paquete MASS
library(MASS)
# Supongamos que 'anorexia' es tu marco de datos
# Crearé un marco de datos de ejemplo para demostración
anorexia <- data.frame(
Treat = c("Cont", "CBT", "FT"),
Prewt = c(120, 110, 115),
Postwt = c(130, 125, 120)
)
# Ajusta un modelo lineal
model <- lm(Postwt ~ Treat + Prewt, data = anorexia)
# Realiza un análisis de varianza (ANOVA) para comparar los tratamientos
anova_result <- anova(model)
## Warning in anova.lm(model): ANOVA F-tests on an essentially perfect fit are
## unreliable
# Imprime los resultados
print(anova_result)
## Analysis of Variance Table
##
## Response: Postwt
## Df Sum Sq Mean Sq F value Pr(>F)
## Treat 2 50 25 NaN NaN
## Residuals 0 0 NaN
# Si el valor p es menor que el nivel de significancia (por ejemplo, 0.05),
# podemos concluir que hay diferencias significativas entre los tratamientos.
# También puedes calcular estadísticas descriptivas para cada tratamiento:
summary(anorexia$Postwt)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 120.0 122.5 125.0 125.0 127.5 130.0
#Ejercicio 2.6 b)
# Supongamos que 'anorexia' es tu marco de datos con las columnas 'Treat', 'Prewt' y 'Postwt'
# Crearé un marco de datos de ejemplo para demostración
anorexia <- data.frame(
Treat = c("Cont", "CBT", "FT"),
Prewt = c(120, 110, 115),
Postwt = c(130, 125, 120)
)
# Calcula la diferencia de peso para cada paciente
anorexia$WeightChange <- anorexia$Postwt - anorexia$Prewt
# Contar cuántos pacientes ganaron y cuántos perdieron peso
patients_gained_weight <- sum(anorexia$WeightChange > 0)
patients_lost_weight <- sum(anorexia$WeightChange < 0)
# Imprime los resultados
print(paste("Pacientes que ganaron peso:", patients_gained_weight))
## [1] "Pacientes que ganaron peso: 3"
print(paste("Pacientes que perdieron peso:", patients_lost_weight))
## [1] "Pacientes que perdieron peso: 0"
#Ejercicio 2.6 c)
# Supongamos que 'anorexia' es tu marco de datos con las columnas 'Treat', 'Prewt' y 'Postwt'
# Crearé un marco de datos de ejemplo para demostración
anorexia <- data.frame(
Treat = c("Cont", "CBT", "FT"),
Prewt = c(120, 110, 115),
Postwt = c(130, 125, 120)
)
# Calcula la diferencia de peso para cada paciente
anorexia$WeightChange <- anorexia$Postwt - anorexia$Prewt
# Crear una figura y un eje
par(mfrow = c(1, 1)) # Configura una sola gráfica
bar_colors <- c("red", "green", "blue") # Colores para cada tratamiento
barplot(anorexia$WeightChange, names.arg = anorexia$Treat, col = bar_colors,
xlab = "Tratamiento", ylab = "Cambio de peso",
main = "Cambios de peso por tratamiento")
# Agrega una leyenda
legend("topright", legend = anorexia$Treat, fill = bar_colors)
# Guarda la gráfica en un archivo (opcional)
# png("weight_changes_plot.png", width = 800, height = 600, res = 150)
# barplot(anorexia$WeightChange, names.arg = anorexia$Treat, col = bar_colors,
# xlab = "Tratamiento", ylab = "Cambio de peso",
# main = "Cambios de peso por tratamiento")
# Ejercicio 2.7 a )
# Instala el paquete MASS si aún no lo has instalado
if (!requireNamespace("MASS", quietly = TRUE)) {
install.packages("MASS")
}
library(MASS)
# Carga la base de datos Melanoma
data("Melanoma")
# Contar el número de pacientes fallecidos por melanoma (status = 1)
melanoma_deaths <- sum(Melanoma$status == 1)
# Contar el número de pacientes fallecidos por otras causas (status = 3)
other_cause_deaths <- sum(Melanoma$status == 3)
# Imprimir los resultados
cat("Número de pacientes fallecidos por melanoma:", melanoma_deaths, "\n")
## Número de pacientes fallecidos por melanoma: 57
cat("Número de pacientes fallecidos por otras causas:", other_cause_deaths, "\n")
## Número de pacientes fallecidos por otras causas: 14
# Ejercicio 2.7 b)
# Carga el paquete MASS (si aún no lo has hecho)
if (!requireNamespace("MASS", quietly = TRUE)) {
install.packages("MASS")
}
library(MASS)
# Carga la base de datos "Melanoma"
data("Melanoma")
# Verifica la presencia y ausencia de Melanoma
presencia <- sum(Melanoma$Melanoma == 1)
ausencia <- sum(Melanoma$Melanoma == 0)
# Imprime los resultados
cat("Presencia de Melanoma:", presencia, "\n")
## Presencia de Melanoma: 0
cat("Ausencia de Melanoma:", ausencia, "\n")
## Ausencia de Melanoma: 0
# Ejercicio 2.7 c)
# Load the MASS package
library(MASS)
# Load the Melanoma dataset
data(Melanoma)
# Verify the structure of the dataset
str(Melanoma)
## 'data.frame': 205 obs. of 7 variables:
## $ time : int 10 30 35 99 185 204 210 232 232 279 ...
## $ status : int 3 3 2 3 1 1 1 3 1 1 ...
## $ sex : int 1 1 1 0 1 1 1 0 1 0 ...
## $ age : int 76 56 41 71 52 28 77 60 49 68 ...
## $ year : int 1972 1968 1977 1968 1965 1971 1972 1974 1968 1971 ...
## $ thickness: num 6.76 0.65 1.34 2.9 12.08 ...
## $ ulcer : int 1 0 0 0 1 1 1 1 1 1 ...
# Verify if there are any missing values
sum(is.na(Melanoma))
## [1] 0
# Convert the status variable to a factor
Melanoma$status <- as.factor(Melanoma$status)
# Perform logistic regression analysis
modelo <- glm(status ~ thickness, data = Melanoma, family = binomial)
# Print the model summary
summary(modelo)
##
## Call:
## glm(formula = status ~ thickness, family = binomial, data = Melanoma)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 1.61404 0.24268 6.651 2.91e-11 ***
## thickness -0.20884 0.05574 -3.747 0.000179 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 242.35 on 204 degrees of freedom
## Residual deviance: 226.13 on 203 degrees of freedom
## AIC: 230.13
##
## Number of Fisher Scoring iterations: 4
# Ejercicio 2.7 d)
# Load the MASS package
library(MASS)
# Load the Melanoma dataset
data(Melanoma)
# Calculate the number of patients with and without melanoma
melanoma_present <- sum(Melanoma$status == 2)
melanoma_absent <- sum(Melanoma$status == 3)
# Create a bar plot
barplot(c(melanoma_present, melanoma_absent),
names = c("Melanoma present", "Melanoma absent"),
col = c("red", "green"),
ylab = "Number of patients",
xlab = "Status")
#Ejercicio 2.8 a)
# Cargar el paquete MASS
library(MASS)
# Cargar el conjunto de datos babyboom
data(babyboom)
# Verificar la estructura del conjunto de datos
str(babyboom)
## 'data.frame': 44 obs. of 4 variables:
## $ clock.time : num 5 104 118 155 257 405 407 422 431 708 ...
## $ gender : Factor w/ 2 levels "girl","boy": 1 1 2 2 2 1 1 2 2 2 ...
## $ wt : num 3837 3334 3554 3838 3625 ...
## $ running.time: num 5 64 78 115 177 245 247 262 271 428 ...
# Contar la frecuencia de niños y niñas
sexo_count <- table(babyboom$sex)
sexo_count
## < table of extent 0 >
#Ejercicio 2.8 b)
# Cargar el paquete "UsingR" si aún no está cargado
if (!require(UsingR)) {
install.packages("UsingR")
library(UsingR)
}
# Cargar el conjunto de datos "babyboom"
data("babyboom")
# Filtrar los datos para las primeras 12 horas
primeras_12_horas <- subset(babyboom, clock.time <= 12)
# Calcular el número total de niños y niñas nacidos en las primeras 12 horas
niños <- sum(primeras_12_horas$gender == "boy")
niñas <- sum(primeras_12_horas$gender == "girl")
# Imprimir los resultados
cat("Cantidad de niños nacidos en las primeras 12 horas:", niños, "\n")
## Cantidad de niños nacidos en las primeras 12 horas: 0
cat("Cantidad de niñas nacidas en las primeras 12 horas:", niñas, "\n")
## Cantidad de niñas nacidas en las primeras 12 horas: 1
# Ejercicio 2.8 c)
# Cargar el paquete "UsingR" si aún no está cargado
if (!require(UsingR)) {
install.packages("UsingR")
library(UsingR)
}
# Cargar el conjunto de datos "babyboom"
data("babyboom")
# Filtrar los datos para los niños nacidos por debajo de 3000 gramos
niños_bajo_3000g <- subset(babyboom, wt < 3000 & gender == "boy")
# Calcular la cantidad de niños nacidos por debajo de 3000 gramos
cantidad_niños_bajo_3000g <- nrow(niños_bajo_3000g)
# Imprimir el resultado
cat("Cantidad de niños nacidos por debajo de 3000 gramos:", cantidad_niños_bajo_3000g, "\n")
## Cantidad de niños nacidos por debajo de 3000 gramos: 4
# Ejercicio 2.8 d )
# Cargar el paquete "UsingR" si aún no está cargado
if (!require(UsingR)) {
install.packages("UsingR")
library(UsingR)
}
# Cargar el conjunto de datos "babyboom"
data("babyboom")
# Filtrar los datos para los niños nacidos por debajo de 3000 gramos
niños_bajo_3000g <- subset(babyboom, wt < 3000)
# Crear un gráfico de dispersión para visualizar la relación
plot(niños_bajo_3000g$wt, niños_bajo_3000g$gender,
xlab = "Peso (gramos)", ylab = "Sexo",
main = "Relación entre Peso y Sexo (Niños < 3000g)",
pch = 19, col = "orange")
# Agregar etiquetas para los ejes
legend("topright", legend = c("Niño", "Niña"), col = c("orange", "purple"), pch = 19)
# Imprimir el gráfico
# Ejercicio 2.8 e)
# Cargar el paquete "UsingR" si aún no está cargado
if (!require(UsingR)) {
install.packages("UsingR")
library(UsingR)
}
# Cargar el conjunto de datos "babyboom"
data("babyboom")
# Calcular el promedio de pesos total
promedio_total <- mean(babyboom$wt)
# Calcular el promedio de pesos para niños
niños <- subset(babyboom, gender == "boy")
promedio_niños <- mean(niños$wt)
# Calcular el promedio de pesos para niñas
niñas <- subset(babyboom, gender == "girl")
promedio_niñas <- mean(niñas$wt)
# Crear un gráfico de barras para visualizar los promedios
barplot(c(promedio_total, promedio_niños, promedio_niñas),
names.arg = c("Total", "Niños", "Niñas"),
main = "Promedio de Pesos (babyboom)",
ylab = "Peso (gramos)",
col = c("yellow", "gray", "pink"))
# Imprimir el gráfico
# Ejercicio 2.9 a)
# Cargar el paquete UsingR
library(UsingR)
# Cargar el conjunto de datos Aids2
data(Aids2)
# Verificar la estructura del conjunto de datos
str(Aids2)
## 'data.frame': 2843 obs. of 7 variables:
## $ state : Factor w/ 4 levels "NSW","Other",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ sex : Factor w/ 2 levels "F","M": 2 2 2 2 2 2 2 2 2 2 ...
## $ diag : int 10905 11029 9551 9577 10015 9971 10746 10042 10464 10439 ...
## $ death : int 11081 11096 9983 9654 10290 10344 11135 11069 10956 10873 ...
## $ status : Factor w/ 2 levels "A","D": 2 2 2 2 2 2 2 2 2 2 ...
## $ T.categ: Factor w/ 8 levels "hs","hsid","id",..: 1 1 1 5 1 1 8 1 1 2 ...
## $ age : int 35 53 42 44 39 36 36 31 26 27 ...
# Contar la frecuencia de contagios por estado
contagios_por_estado <- table(Aids2$state)
contagios_por_estado
##
## NSW Other QLD VIC
## 1780 249 226 588
#Ejercicio 2.9 b)
# Cargar el paquete UsingR
library(UsingR)
# Cargar el conjunto de datos Aids2
data(Aids2)
# Filtrar los datos para incluir solo las personas fallecidas por SIDA
fallecidos_sida <- subset(Aids2, status == "F" & death == "AIDS")
# Contar el número de personas fallecidas por SIDA
num_fallecidos_sida <- nrow(fallecidos_sida)
# Imprimir el resultado
cat("El número de personas fallecidas por SIDA es:", num_fallecidos_sida)
## El número de personas fallecidas por SIDA es: 0
# Ejercicio 2.9 c)
# Cargar la base de datos Aids2
data("Aids2")
# Verificar la estructura de la base de datos
str(Aids2)
## 'data.frame': 2843 obs. of 7 variables:
## $ state : Factor w/ 4 levels "NSW","Other",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ sex : Factor w/ 2 levels "F","M": 2 2 2 2 2 2 2 2 2 2 ...
## $ diag : int 10905 11029 9551 9577 10015 9971 10746 10042 10464 10439 ...
## $ death : int 11081 11096 9983 9654 10290 10344 11135 11069 10956 10873 ...
## $ status : Factor w/ 2 levels "A","D": 2 2 2 2 2 2 2 2 2 2 ...
## $ T.categ: Factor w/ 8 levels "hs","hsid","id",..: 1 1 1 5 1 1 8 1 1 2 ...
## $ age : int 35 53 42 44 39 36 36 31 26 27 ...
# Contar la frecuencia de cada tipo de transmisión por sexo
table(Aids2$sex, Aids2$T)
##
## hs hsid id het haem blood mother other
## F 1 0 20 20 0 37 4 7
## M 2464 72 28 21 46 57 3 63
# Crear una tabla de contingencia para visualizar la relación
contingency_table <- table(Aids2$sex, Aids2$T)
contingency_table
##
## hs hsid id het haem blood mother other
## F 1 0 20 20 0 37 4 7
## M 2464 72 28 21 46 57 3 63
# Calcular la proporción de cada tipo de transmisión por sexo
prop.table(contingency_table, 1)
##
## hs hsid id het haem blood
## F 0.011235955 0.000000000 0.224719101 0.224719101 0.000000000 0.415730337
## M 0.894698620 0.026143791 0.010167030 0.007625272 0.016702977 0.020697168
##
## mother other
## F 0.044943820 0.078651685
## M 0.001089325 0.022875817
# Graficar la relación utilizando una gráfica de barras
barplot(contingency_table, main = "Relación entre sexo y tipo de transmisión del SIDA",
xlab = "Sexo", ylab = "Frecuencia", col = c("blue", "red"))
legend("topright", levels(Aids2$T), fill = c("blue", "red"))
#Ejercicio 2.9 d)
# Cargar la base de datos Aids2
data("Aids2")
# Contar la frecuencia de cada tipo de transmisión
transmission_counts <- table(Aids2$T)
# Calcular los porcentajes de cada tipo de transmisión
transmission_percentages <- round(prop.table(transmission_counts) * 100, 1)
# Crear el gráfico de pastel
pie(transmission_counts, labels = names(transmission_percentages), main = "Tipos de transmisión del SIDA", col = rainbow(length(transmission_counts)))
legend("top", legend = names(transmission_counts), fill = rainbow(length(transmission_counts)))
# Ejercicio 2.10 a)
# Cargar la base de datos crime
data("crime")
# Sumar la tasa de crímenes para cada estado en 1983 y 1993
total_crimes_1983 <- sum(crime$y1983)
total_crimes_1993 <- sum(crime$y1993)
# Comparar las sumas de las tasas de crímenes entre 1983 y 1993
if (total_crimes_1993 > total_crimes_1983) {
print("La tasa total de crímenes en 1993 fue mayor que en 1983.")
} else if (total_crimes_1993 < total_crimes_1983) {
print("La tasa total de crímenes en 1993 fue menor que en 1983.")
} else {
print("La tasa total de crímenes en 1983 y 1993 es igual.")
}
## [1] "La tasa total de crímenes en 1993 fue mayor que en 1983."
# Ejercicio 2.10 b)
# Replace "data_string" with the actual CSV data as a string
data_string <- "Estado,y1983,y1993\n
Alaska,100,120\n
California,200,250\n
... (remaining data rows)"
# Split the data string into lines
data_lines <- strsplit(data_string, "\n")
# Initialize an empty data frame
data <- data.frame()
# Process each data line
for (i in 1:length(data_lines)) {
# Split the current line into individual values
current_line <- strsplit(data_lines[[i]], ",")
# Add the values to the data frame
data <- rbind(data, data.frame(
Estado = current_line[[1]][1],
y1983 = as.numeric(current_line[[2]][1]),
y1993 = as.numeric(current_line[[3]][1])
))
}
## Warning in data.frame(Estado = current_line[[1]][1], y1983 =
## as.numeric(current_line[[2]][1]), : NAs introducidos por coerción
# Identify the state with the highest crime rate in 1983
estado_mayor_tasa_1983 <- data[which(data$y1983 == max(data$y1983)),]$Estado
# Identify the state with the highest crime rate in 1993
estado_mayor_tasa_1993 <- data[which(data$y1993 == max(data$y1993)),]$Estado
# Display results
print(paste("State with the highest crime rate in 1983:", estado_mayor_tasa_1983[1]))
## [1] "State with the highest crime rate in 1983: NA"
print(paste("State with the highest crime rate in 1993:", estado_mayor_tasa_1993[1]))
## [1] "State with the highest crime rate in 1993: NA"
#Ejercicio 2.10 c)
# Replace "data_string" with the actual CSV data as a string
data_string <- "Estado,y1983,y1993\n
Alaska,100,120\n
California,200,250\n
... (remaining data rows)"
# Split the data string into lines
data_lines <- strsplit(data_string, "\n")
# Initialize an empty data frame
data <- data.frame()
# Process each data line
for (i in 1:length(data_lines)) {
# Split the current line into individual values
current_line <- strsplit(data_lines[[i]], ",")
# Add the values to the data frame
data <- rbind(data, data.frame(
Estado = current_line[[1]][1],
y1983 = as.numeric(current_line[[2]][1]),
y1993 = as.numeric(current_line[[3]][1])
))
}
## Warning in data.frame(Estado = current_line[[1]][1], y1983 =
## as.numeric(current_line[[2]][1]), : NAs introducidos por coerción
# Calcular la tasa de criminalidad total para cada estado
data$tasa_criminalidad_total <- data$y1983 + data$y1993
# Identificar el estado con la mayor tasa de criminalidad total
estado_mayor_tasa_total <- data[which.max(data$tasa_criminalidad_total),]$Estado
# Mostrar resultados
print(paste("Estado con mayor tasa de criminalidad total:", estado_mayor_tasa_total[1]))
## [1] "Estado con mayor tasa de criminalidad total: NA"
# Ejercicio 2.10 d)
# Cargar la biblioteca ggplot2
library(ggplot2)
# Cargar la base de datos crime
data("crime")
# Crear un data frame con los estados, años y tasas de crímenes
crime_plot <- data.frame(State = rep(rownames(crime), 2),
Year = rep(c(1983, 1993), each = nrow(crime)),
CrimeRate = c(crime$y1983, crime$y1993))
# Graficar la tasa de crímenes por estado y año
ggplot(crime_plot, aes(x = State, y = CrimeRate, fill = factor(Year))) +
geom_bar(stat = "identity") +
labs(title = "Tasa de crímenes por estado en 1983 y 1993",
x = "Estado",
y = "Tasa de crímenes",
fill = "Año") +
theme_minimal() +
theme(legend.position = "right")