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)
library(ggplot2)
2.1. Carga (o instala primero y luego carga) el paquete UsingR
#a. ¿Cuantos conjuntos de datos de trabajo contiene el paquete?
packageDescription("UsingR")
## Package: UsingR
## Version: 2.0-7
## Title: Data Sets, Etc. for the Text "Using R for Introductory
## Statistics", Second Edition
## Author: John Verzani <verzani@math.csi.cuny.edu>
## Maintainer: John Verzani <verzani@math.csi.cuny.edu>
## Description: A collection of data sets to accompany the textbook "Using
## R for Introductory Statistics," second edition.
## Depends: R (>= 2.15.0), MASS, HistData, Hmisc
## Suggests: zoo, ggplot2, vcd, lubridate, aplpack
## License: GPL (>= 2)
## LazyData: TRUE
## NeedsCompilation: no
## Packaged: 2022-01-10 19:16:26 UTC; jverzani
## Repository: CRAN
## Date/Publication: 2022-01-11 09:52:45 UTC
## Built: R 4.3.3; ; 2024-05-01 03:34:00 UTC; windows
##
## -- File: C:/Users/Karol/AppData/Local/R/win-library/4.3/UsingR/Meta/package.rds
# Establecer el diseño de la grilla para mostrar los gráficos
par(mfrow=c(3, 2))
# Histograma para bumpers
hist(bumpers, main="Histograma de Bumpers", xlab="Valores", ylab="Frecuencia", col="lightblue")
# Boxplot para bumpers
boxplot(bumpers, main="Boxplot de bumpers")
#firstchi
data("firstchi")
hist(firstchi, main="Histograma de Firstchi", ylab="Valores",col="yellow")
# Boxplot para firstchi
boxplot(firstchi, main="Boxplot de firstchi")
#math
hist(math, main="Histograma de Math", xlab="Valores", ylab="Frecuencia", col="lightgreen")
#Boxplot math
data(math)
boxplot(math, main="Boxplot de Math", ylab="Valores", col = "lightyellow")
c) Estima visualmente las medias, medianas y desviaciones estándar de
cada conjunto de datos y a continuación calcula los valores anteriores
con las funciones adecuadas. ¿Qué gráfico resulta de mayor ayuda para la
aproximación?
median(bumpers)
## [1] 2129
mean(bumpers)
## [1] 2122.478
sd(bumpers)
## [1] 798.4574
hist(bumpers, main="Histograma de Bumpers", xlab="Valores", ylab="Frecuencia", col="lightblue")
#Firstchi
median(firstchi)
## [1] 23
mean(firstchi)
## [1] 23.97701
sd(firstchi)
## [1] 6.254258
hist(firstchi, main="Histograma de Firstchi", ylab="Valores",col="yellow")
#Math
median(math)
## [1] 54
mean(math)
## [1] 54.9
sd(math)
## [1] 9.746264
hist(math, main="Histograma de Math", xlab="Valores", ylab="Frecuencia", col="lightgreen")
2.2. El conjunto de datos brightness contiene información sobre el
brillo de 963 estrellas. a. Representa estos datos mediante un
histograma y un gráfico de densidad superpuesto
data(brightness)
hist(brightness, probability = TRUE, col= "lightgreen")
lines(density(brightness), col="magenta3",lwd=3)
b) Representa gráficamente estos datos mediante un diagrama de caja
(boxplot). ¿Dirias que los datos presentan “outliers”? Cuál es el
segundo menor outlier?
# Supongamos que los datos de brillo de las estrellas están almacenados en el objeto 'brightness'
# Diagrama de caja (boxplot)
boxplot(brightness, col = "lightblue", main = "Diagrama de caja del brillo de estrellas", ylab = "Brillo")
# Identificar outliers
outliers <- boxplot(brightness, plot = FALSE)$out
print("Outliers:")
## [1] "Outliers:"
print(outliers)
## [1] 12.31 11.71 5.53 11.28 4.78 5.13 4.37 5.04 12.43 12.04 4.55 11.55
## [13] 12.14 11.63 4.99 11.67 4.61 11.99 12.04 5.55 12.17 11.55 11.79 12.19
## [25] 2.07 11.65 11.73 2.28 5.42 3.88 5.54 5.29 5.01 11.55 4.89 11.80
## [37] 5.41 5.24
# Segundo menor outlier
outliers_sorted <- sort(outliers)
segundo_menor_outlier <- outliers_sorted[2]
print("Segundo menor outlier:")
## [1] "Segundo menor outlier:"
print(segundo_menor_outlier)
## [1] 2.28
#A.
quantile(brightness)
## 0% 25% 50% 75% 100%
## 2.0700 7.7025 8.5000 9.1300 12.4300
#Con esto elegimos las bisagras a usar y filtramos los valores del dataset de brightness que esten en ese rango de valores
brightness.sin=brightness[brightness > 7.702 & brightness < 9.130]
boxplot(brightness.sin, main="Brightness nuevo", col = "yellow")
2.3. El paquete MASS contiene la base de datos UScereal con información
relativa a desayunos con cereales.
#a. ¿Cuál es el tipo de datos de cada variable?
data("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 ...
#b) Utiliza los datos de cereales para investigar algunas asociaciones entre sus variables:
#i. La relación entre manufacturer y shelf.
table(UScereal$mfr,UScereal$shelf)
##
## 1 2 3
## G 6 7 9
## K 4 7 10
## N 2 0 1
## P 2 1 6
## Q 0 3 2
## R 4 0 1
#ii. La relación entre fat y vitamins.
table(UScereal$vitamins,UScereal$fat)
##
## 0 0.6666667 1 1.1363636 1.3333333 1.4925373 1.6 2 2.6666667
## 100% 1 0 3 0 1 0 0 0 0
## enriched 18 1 7 1 8 4 1 2 3
## none 3 0 0 0 0 0 0 0 0
##
## 2.9850746 3.030303 4 6 9.0909091
## 100% 0 0 0 0 0
## enriched 4 2 4 1 1
## none 0 0 0 0 0
#iii. La relación entre fat y shelf
table(UScereal$shelf,UScereal$fat)
##
## 0 0.6666667 1 1.1363636 1.3333333 1.4925373 1.6 2 2.6666667 2.9850746
## 1 10 0 2 0 2 2 1 0 1 0
## 2 3 1 5 0 4 1 0 1 1 1
## 3 9 0 3 1 3 1 0 1 1 3
##
## 3.030303 4 6 9.0909091
## 1 0 0 0 0
## 2 0 1 0 0
## 3 2 3 1 1
#iv. La relación entre carbohydrates y sugars.
table(UScereal$carbo,UScereal$sugars)
##
## 0 0.8 1.769912 2 3 4 4.477612 5.681818 6 6.666667 7.462687 8.270677
## 10.52632 0 0 0 0 0 0 0 0 0 0 0 1
## 11 0 0 0 0 0 0 0 0 0 0 0 0
## 12 0 0 0 0 0 0 0 0 0 0 0 0
## 12.5 0 0 0 0 0 0 0 0 0 0 0 0
## 13 1 0 0 0 0 0 0 0 0 0 0 0
## 13.6 0 1 0 0 0 0 0 0 0 0 0 0
## 14 0 0 0 1 0 0 0 0 0 0 0 0
## 14.66667 0 0 0 0 0 0 0 0 0 0 0 0
## 15 0 0 0 0 0 0 0 0 1 0 0 0
## 15.15152 0 0 0 0 0 0 0 0 0 0 0 0
## 15.33333 0 0 0 0 0 0 0 0 0 0 0 0
## 16 1 0 0 0 2 0 0 0 0 0 0 0
## 16.41791 0 0 0 0 0 0 0 0 0 0 0 0
## 17 0 0 0 0 1 0 0 0 0 0 0 0
## 17.04545 0 0 0 0 0 0 0 1 0 0 0 0
## 17.33333 0 0 0 0 0 0 0 0 0 0 0 0
## 17.5 0 0 0 0 0 0 0 0 0 0 0 0
## 17.91045 0 0 0 0 0 0 0 0 0 0 0 0
## 18.66667 0 0 0 0 0 0 0 0 0 0 0 0
## 19.40299 0 0 0 0 0 0 0 0 0 0 1 0
## 20 0 0 0 0 1 0 0 0 0 0 0 0
## 20.35398 0 0 1 0 0 0 0 0 0 0 0 0
## 20.89552 0 0 0 0 0 0 0 0 0 0 0 0
## 21 0 0 0 1 2 0 0 0 0 0 0 0
## 21.21212 0 0 0 0 0 0 0 0 0 0 0 0
## 21.33333 0 0 0 0 0 0 0 0 0 0 0 0
## 22 0 0 0 0 2 0 0 0 0 0 0 0
## 22.38806 0 0 0 0 0 0 0 0 0 0 0 0
## 24 0 0 0 0 0 0 0 0 0 1 0 0
## 25.37313 0 0 0 0 0 0 1 0 0 0 0 0
## 26 0 0 0 0 0 0 0 0 0 0 0 0
## 26.66667 0 0 0 0 0 0 0 0 0 0 0 0
## 27 0 0 0 0 0 0 0 0 0 0 0 0
## 28 0 0 0 0 0 1 0 0 0 0 0 0
## 28.35821 1 0 0 0 0 0 0 0 0 0 0 0
## 29.85075 1 0 0 0 0 0 0 0 0 0 0 0
## 30 0 0 0 0 0 0 0 0 0 0 0 0
## 31.34328 0 0 0 0 0 0 0 0 0 0 0 0
## 39.39394 0 0 0 0 0 0 0 0 0 0 0 0
## 68 0 0 0 0 0 0 0 0 0 0 0 0
##
## 8.75 8.955224 10.447761 10.666667 11 12 12.121212 13 13.333333
## 10.52632 0 0 0 0 0 0 0 0 0
## 11 0 0 0 0 0 0 0 1 0
## 12 0 0 0 0 1 1 0 2 0
## 12.5 0 0 0 0 0 0 0 0 0
## 13 0 0 0 0 0 2 0 0 0
## 13.6 0 0 0 0 0 0 0 0 0
## 14 0 0 0 0 0 0 0 0 1
## 14.66667 0 0 0 0 0 0 0 0 1
## 15 0 0 0 0 0 0 0 0 0
## 15.15152 0 0 0 0 0 0 0 0 0
## 15.33333 0 0 0 0 0 0 0 0 1
## 16 0 0 0 0 0 0 0 0 0
## 16.41791 0 0 0 0 0 0 0 0 0
## 17 0 0 0 0 0 0 0 0 0
## 17.04545 0 0 0 0 0 0 0 0 0
## 17.33333 0 0 0 0 0 1 0 0 0
## 17.5 1 0 0 0 0 0 0 0 0
## 17.91045 0 1 0 0 0 0 0 0 0
## 18.66667 0 0 0 0 0 0 0 0 0
## 19.40299 0 0 0 0 0 0 0 0 0
## 20 0 0 0 0 0 1 0 0 0
## 20.35398 0 0 0 0 0 0 0 0 0
## 20.89552 0 0 0 0 0 0 0 0 0
## 21 0 0 0 0 0 0 0 0 0
## 21.21212 0 0 0 0 0 0 0 0 0
## 21.33333 0 0 0 1 0 0 0 0 0
## 22 0 0 0 0 0 0 0 0 0
## 22.38806 0 1 0 0 0 0 0 0 0
## 24 0 0 0 1 0 0 0 0 0
## 25.37313 0 0 0 0 0 0 0 0 0
## 26 0 0 0 0 0 0 0 0 0
## 26.66667 0 0 0 0 0 1 0 0 0
## 27 0 0 0 0 0 0 0 0 0
## 28 0 0 0 0 0 1 0 0 0
## 28.35821 0 0 0 0 0 0 0 0 0
## 29.85075 0 0 0 0 0 0 0 0 0
## 30 0 0 0 0 0 1 0 0 0
## 31.34328 0 0 1 0 0 0 0 0 0
## 39.39394 0 0 0 0 0 0 1 0 0
## 68 0 0 0 0 0 1 0 0 0
##
## 13.432836 14 14.666667 14.925373 15.151515 16 17.045455 17.910448
## 10.52632 0 0 0 0 0 0 0 0
## 11 0 1 0 0 0 0 0 0
## 12 0 0 0 0 0 0 0 0
## 12.5 0 0 0 0 0 0 1 0
## 13 0 0 0 0 0 0 0 0
## 13.6 0 0 0 0 0 0 0 0
## 14 0 0 0 0 0 0 0 0
## 14.66667 0 0 0 0 0 0 0 0
## 15 0 1 0 0 0 0 0 0
## 15.15152 0 0 0 0 0 0 0 0
## 15.33333 0 0 0 0 0 0 0 0
## 16 0 0 0 0 0 1 0 0
## 16.41791 0 0 0 0 0 0 0 0
## 17 0 0 0 0 0 0 0 0
## 17.04545 0 0 0 0 0 0 0 0
## 17.33333 0 0 0 0 0 1 0 0
## 17.5 0 0 0 0 0 0 0 0
## 17.91045 0 0 0 1 0 0 0 0
## 18.66667 0 0 1 0 0 1 0 0
## 19.40299 0 0 0 0 0 0 0 0
## 20 0 1 0 0 0 0 0 0
## 20.35398 0 0 0 0 0 0 0 0
## 20.89552 0 0 0 0 0 0 0 1
## 21 0 0 0 0 0 1 0 0
## 21.21212 0 0 0 0 1 0 0 0
## 21.33333 0 0 0 0 0 0 0 0
## 22 0 0 0 0 0 0 0 0
## 22.38806 1 0 0 0 0 0 0 0
## 24 0 0 0 0 0 0 0 0
## 25.37313 0 0 0 0 0 0 0 0
## 26 0 1 0 0 0 0 0 0
## 26.66667 0 0 0 0 0 0 0 0
## 27 0 0 0 0 0 0 0 0
## 28 0 0 0 0 0 0 0 0
## 28.35821 0 0 0 0 0 0 0 0
## 29.85075 0 0 0 0 0 0 0 0
## 30 0 0 0 0 0 0 0 0
## 31.34328 0 0 0 0 0 0 0 0
## 39.39394 0 0 0 0 0 0 0 0
## 68 0 0 0 0 0 0 0 0
##
## 18.181818 19.402985 20 20.895522
## 10.52632 0 0 0 0
## 11 0 0 0 0
## 12 0 0 1 0
## 12.5 0 0 0 0
## 13 0 0 0 0
## 13.6 0 0 0 0
## 14 0 0 0 0
## 14.66667 0 0 0 0
## 15 0 0 0 0
## 15.15152 1 0 0 0
## 15.33333 0 0 0 0
## 16 0 0 0 0
## 16.41791 0 0 0 1
## 17 0 0 0 0
## 17.04545 0 0 0 0
## 17.33333 0 0 0 0
## 17.5 0 0 0 0
## 17.91045 0 0 0 0
## 18.66667 0 0 0 0
## 19.40299 0 0 0 0
## 20 0 0 0 0
## 20.35398 0 0 0 0
## 20.89552 0 0 0 0
## 21 0 0 0 0
## 21.21212 0 0 0 0
## 21.33333 0 0 0 0
## 22 0 0 0 0
## 22.38806 0 0 0 0
## 24 0 0 0 0
## 25.37313 0 1 0 0
## 26 0 0 0 0
## 26.66667 0 0 0 0
## 27 0 0 1 0
## 28 0 0 0 0
## 28.35821 0 0 0 0
## 29.85075 0 0 0 0
## 30 0 0 0 0
## 31.34328 0 0 0 0
## 39.39394 0 0 0 0
## 68 0 0 0 0
options(max.print = 99999) # Establece un valor alto
#v. La relación entre fibre y manufacturer.
table(UScereal$mfr, UScereal$fibre)
##
## 0 1 1.333333 1.6 2 2.666667 2.985075 3 3.409091 3.75 4 4.477612 5 5.970149
## G 9 0 1 1 3 2 0 3 0 0 2 0 1 0
## K 2 7 2 0 0 1 0 0 0 1 1 2 0 0
## N 0 0 0 0 0 0 0 0 0 0 0 1 0 1
## P 3 0 0 0 0 0 0 0 1 0 0 0 0 0
## Q 2 1 0 0 0 0 1 0 0 0 1 0 0 0
## R 2 0 1 0 0 0 0 0 0 0 0 1 0 1
##
## 6.666667 7.462687 8 8.955224 9.090909 12 27.272727 28 30.30303
## G 0 0 0 0 0 0 0 0 0
## K 1 1 1 0 0 0 1 1 0
## N 0 0 0 0 0 0 0 0 1
## P 0 2 0 1 1 1 0 0 0
## Q 0 0 0 0 0 0 0 0 0
## R 0 0 0 0 0 0 0 0 0
#vi. La relación entre sodium y sugars.
table(UScereal$sodium, UScereal$sugars)
##
## 0 0.8 1.769912 2 3 4 4.477612 5.681818 6 6.666667 7.462687 8.270677
## 0 3 0 0 0 0 0 0 0 0 0 0 0
## 51.13636 0 0 0 0 0 0 0 0 0 0 0 0
## 90 0 0 0 0 0 0 0 0 0 0 0 0
## 93.33333 0 0 0 0 0 0 0 0 0 0 0 0
## 125 0 0 0 0 0 0 0 0 0 0 0 0
## 135.33835 0 0 0 0 0 0 0 0 0 0 0 1
## 140 0 0 0 0 0 0 0 0 0 0 0 0
## 159.09091 0 0 0 0 0 0 0 1 0 0 0 0
## 173.33333 0 0 0 1 0 0 0 0 0 0 0 0
## 180 0 0 0 0 0 0 0 0 0 0 0 0
## 186.66667 0 0 0 0 0 0 0 0 0 0 0 0
## 190 0 0 0 0 0 0 0 0 0 0 0 0
## 200 0 0 0 0 3 0 0 0 0 0 0 0
## 212.38938 0 0 1 0 0 0 0 0 0 0 0 0
## 220 0 0 0 0 1 0 0 0 1 0 0 0
## 223.8806 0 0 0 0 0 0 0 0 0 0 0 0
## 226.66667 0 0 0 0 0 0 0 0 0 0 0 0
## 227.27273 0 0 0 0 0 0 0 0 0 0 0 0
## 230 0 0 0 0 1 0 0 0 0 0 0 0
## 232 0 1 0 0 0 0 0 0 0 0 0 0
## 238.80597 0 0 0 0 0 0 0 0 0 0 0 0
## 240 0 0 0 0 0 0 0 0 0 0 0 0
## 253.33333 0 0 0 0 0 0 0 0 0 1 0 0
## 266.66667 0 0 0 0 0 0 0 0 0 0 0 0
## 270 0 0 0 0 0 0 0 0 0 0 0 0
## 280 1 0 0 0 1 0 0 0 0 0 0 0
## 283.58209 0 0 0 0 0 0 0 0 0 0 0 0
## 290 0 0 0 1 1 0 0 0 0 0 0 0
## 293.33333 0 0 0 0 0 0 0 0 0 0 0 0
## 298.50746 0 0 0 0 0 0 0 0 0 0 0 0
## 313.43284 0 0 0 0 0 0 0 0 0 0 1 0
## 320 0 0 0 0 1 0 0 0 0 0 0 0
## 328.35821 0 0 0 0 0 0 0 0 0 0 0 0
## 333.33333 0 0 0 0 0 1 0 0 0 0 0 0
## 340 0 0 0 0 0 0 0 0 0 0 0 0
## 343.28358 0 0 0 0 0 0 1 0 0 0 0 0
## 358.20896 0 0 0 0 0 0 0 0 0 0 0 0
## 373.33333 0 0 0 0 0 0 0 0 0 0 0 0
## 393.93939 0 0 0 0 0 0 0 0 0 0 0 0
## 680 0 0 0 0 0 0 0 0 0 0 0 0
## 787.87879 0 0 0 0 0 0 0 0 0 0 0 0
##
## 8.75 8.955224 10.447761 10.666667 11 12 12.121212 13 13.333333
## 0 1 0 0 0 0 1 0 0 0
## 51.13636 0 0 0 0 0 0 0 0 0
## 90 0 0 0 0 0 1 0 0 0
## 93.33333 0 0 0 0 0 0 0 0 0
## 125 0 0 0 0 0 0 0 1 0
## 135.33835 0 0 0 0 0 0 0 0 0
## 140 0 0 0 0 0 1 0 0 0
## 159.09091 0 0 0 0 0 0 0 0 0
## 173.33333 0 0 0 0 0 0 0 0 0
## 180 0 0 0 0 0 1 0 2 0
## 186.66667 0 0 0 0 0 0 0 0 1
## 190 0 0 0 0 0 0 0 0 0
## 200 0 0 0 0 0 0 0 0 0
## 212.38938 0 0 0 0 0 0 0 0 0
## 220 0 0 0 0 1 0 0 0 0
## 223.8806 0 1 0 0 0 0 0 0 0
## 226.66667 0 0 0 0 0 1 0 0 0
## 227.27273 0 0 0 0 0 0 1 0 0
## 230 0 0 0 0 0 0 0 0 0
## 232 0 0 0 0 0 0 0 0 0
## 238.80597 0 0 0 0 0 0 0 0 0
## 240 0 0 0 0 0 0 0 0 1
## 253.33333 0 0 0 0 0 0 0 0 0
## 266.66667 0 0 0 1 0 0 0 0 0
## 270 0 0 0 0 0 1 0 0 0
## 280 0 0 0 1 0 1 0 0 0
## 283.58209 0 0 0 0 0 0 0 0 0
## 290 0 0 0 0 0 0 0 0 0
## 293.33333 0 0 0 0 0 0 0 0 0
## 298.50746 0 1 0 0 0 0 0 0 0
## 313.43284 0 0 0 0 0 0 0 0 0
## 320 0 0 0 0 0 0 0 0 0
## 328.35821 0 0 1 0 0 0 0 0 0
## 333.33333 0 0 0 0 0 0 0 0 1
## 340 0 0 0 0 0 0 0 0 0
## 343.28358 0 0 0 0 0 0 0 0 0
## 358.20896 0 0 0 0 0 0 0 0 0
## 373.33333 0 0 0 0 0 1 0 0 0
## 393.93939 0 0 0 0 0 0 0 0 0
## 680 0 0 0 0 0 1 0 0 0
## 787.87879 0 0 0 0 0 0 0 0 0
##
## 13.432836 14 14.666667 14.925373 15.151515 16 17.045455 17.910448
## 0 0 0 0 0 0 0 0 0
## 51.13636 0 0 0 0 0 0 1 0
## 90 0 0 0 0 0 0 0 0
## 93.33333 0 0 0 0 0 0 0 0
## 125 0 1 0 0 0 0 0 0
## 135.33835 0 0 0 0 0 0 0 0
## 140 0 0 0 0 0 0 0 0
## 159.09091 0 0 0 0 0 0 0 0
## 173.33333 0 0 0 0 0 0 0 0
## 180 0 0 0 0 0 1 0 0
## 186.66667 0 0 0 0 0 0 0 0
## 190 0 1 0 0 0 0 0 0
## 200 0 0 0 0 0 0 0 0
## 212.38938 0 0 0 0 0 0 0 0
## 220 0 0 0 0 0 0 0 0
## 223.8806 0 0 0 0 0 0 0 0
## 226.66667 0 0 0 0 0 0 0 0
## 227.27273 0 0 0 0 0 0 0 0
## 230 0 0 0 0 0 0 0 0
## 232 0 0 0 0 0 0 0 0
## 238.80597 0 0 0 1 0 0 0 0
## 240 0 0 0 0 0 0 0 0
## 253.33333 0 0 0 0 0 0 0 0
## 266.66667 0 0 1 0 0 0 0 0
## 270 0 0 0 0 0 0 0 0
## 280 0 2 0 0 0 2 0 0
## 283.58209 1 0 0 0 0 0 0 0
## 290 0 0 0 0 0 0 0 0
## 293.33333 0 0 0 0 0 1 0 0
## 298.50746 0 0 0 0 0 0 0 0
## 313.43284 0 0 0 0 0 0 0 0
## 320 0 0 0 0 0 0 0 0
## 328.35821 0 0 0 0 0 0 0 0
## 333.33333 0 0 0 0 0 0 0 0
## 340 0 0 0 0 0 0 0 0
## 343.28358 0 0 0 0 0 0 0 0
## 358.20896 0 0 0 0 0 0 0 1
## 373.33333 0 0 0 0 0 0 0 0
## 393.93939 0 0 0 0 0 0 0 0
## 680 0 0 0 0 0 0 0 0
## 787.87879 0 0 0 0 1 0 0 0
##
## 18.181818 19.402985 20 20.895522
## 0 0 0 0 0
## 51.13636 0 0 0 0
## 90 0 0 0 0
## 93.33333 0 0 1 0
## 125 0 0 0 0
## 135.33835 0 0 0 0
## 140 0 0 0 0
## 159.09091 0 0 0 0
## 173.33333 0 0 0 0
## 180 0 0 0 0
## 186.66667 0 0 0 0
## 190 0 0 0 0
## 200 0 0 0 0
## 212.38938 0 0 0 0
## 220 0 0 0 0
## 223.8806 0 1 0 0
## 226.66667 0 0 0 0
## 227.27273 0 0 0 0
## 230 0 0 0 0
## 232 0 0 0 0
## 238.80597 0 0 0 0
## 240 0 0 0 0
## 253.33333 0 0 0 0
## 266.66667 0 0 0 0
## 270 0 0 0 0
## 280 0 0 0 0
## 283.58209 0 0 0 0
## 290 0 0 0 0
## 293.33333 0 0 0 0
## 298.50746 0 0 0 1
## 313.43284 0 0 0 0
## 320 0 0 0 0
## 328.35821 0 0 0 0
## 333.33333 0 0 0 0
## 340 0 0 1 0
## 343.28358 0 0 0 0
## 358.20896 0 0 0 0
## 373.33333 0 0 0 0
## 393.93939 1 0 0 0
## 680 0 0 0 0
## 787.87879 0 0 0 0
2.4. El conjunto de datos mammals contiene datos sobre la relación entre peso corporal y peso del cerebro.
#a. ¿Cuál es la correlación lineal entre estas variables?
data(mammals)
cor(mammals$body, mammals$brain)
## [1] 0.9341638
#b. Representa los datos mediante la instrucción plot
plot(mammals, main="Mammals", col = "lightgreen")
#c) Transforma los datos mediante la función log y repite el estudio. ¿Cómo cambian los resultados?
plot(log(mammals), main="Mammals con funcion Log", col = "orange")
2.5. Enlaza la base de datos emissions del paquete UsingR.
# Supongamos que 'emissions' es un conjunto de datos que contiene las variables GDP, perCapita y CO2 de cada país.
# Cargar o definir los datos de emisiones (asegúrate de cargar o definir correctamente los datos)
# Ejemplo:
# emissions <- read.csv("ruta_del_archivo/emissions.csv")
# Calcular la matriz de correlación
correlation_matrix <- cor(emissions[, c("GDP", "perCapita", "CO2")])
# Ver la matriz de correlación
print(correlation_matrix)
## GDP perCapita CO2
## GDP 1.0000000 0.4325303 0.9501753
## perCapita 0.4325303 1.0000000 0.2757962
## CO2 0.9501753 0.2757962 1.0000000
# Ahora puedes crear gráficos de caja o cualquier otro tipo de visualización que desees utilizando los datos de 'emissions'
# Por ejemplo, para crear un boxplot de todas las variables en 'emissions', podrías usar algo como:
boxplot(emissions, col = c("red", "green", "blue"))
#b) Construye un modelo de regresión para predecir las emisiones de CO2 a partir de cada una de las variables.
# Modelo de regresión para GDP
model_gdp <- lm(CO2 ~ GDP, data = emissions)
summary(model_gdp) # Resumen del modelo
##
## Call:
## lm(formula = CO2 ~ GDP, data = emissions)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1107.35 -81.47 -32.69 126.33 1438.79
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.043e+01 9.441e+01 0.216 0.83
## GDP 7.815e-04 5.233e-05 14.933 1.2e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 427.4 on 24 degrees of freedom
## Multiple R-squared: 0.9028, Adjusted R-squared: 0.8988
## F-statistic: 223 on 1 and 24 DF, p-value: 1.197e-13
# Modelo de regresión para perCapita
model_perCapita <- lm(CO2 ~ perCapita, data = emissions)
summary(model_perCapita) # Resumen del modelo
##
## Call:
## lm(formula = CO2 ~ perCapita, data = emissions)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1088.4 -681.4 -317.7 80.5 5479.7
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -223.99167 686.10910 -0.326 0.747
## perCapita 0.05040 0.03586 1.406 0.173
##
## Residual standard error: 1318 on 24 degrees of freedom
## Multiple R-squared: 0.07606, Adjusted R-squared: 0.03757
## F-statistic: 1.976 on 1 and 24 DF, p-value: 0.1726
2.6. La base de datos MASS posee la siguiente base de datos: “anorexia” que contiene el cambio de peso en pacientes femeninas la cual posee 72 filas y 3 columnas.
# Cargar o definir los datos de anorexia (asegúrate de cargar o definir correctamente los datos)
# Ejemplo:
# data(anorexia)
# Visualizar los primeros registros de los datos
head(anorexia)
## Treat Prewt Postwt
## 1 Cont 80.7 80.2
## 2 Cont 89.4 80.1
## 3 Cont 91.8 86.4
## 4 Cont 74.0 86.3
## 5 Cont 78.1 76.1
## 6 Cont 88.3 78.1
# Crear un histograma con colores
hist(anorexia, col = "skyblue", main = "Distribución de datos de anorexia")
mean_anorexia=aggregate(anorexia[,2:length(anorexia)], by=list(anorexia$Treat), FUN = mean)
mean_anorexia["diferencia"]=mean_anorexia$Postwt - mean_anorexia$Prewt
mean_anorexia[mean_anorexia$diferencia == max(mean_anorexia$diferencia),]
## Group.1 Prewt Postwt diferencia
## 3 FT 83.22941 90.49412 7.264706
#b. ¿Cuantos pacientes ganaron y cuantos perdieron peso?
anorexia["diferencia"]=anorexia$Postwt - anorexia$Prewt
#Total que ganaron peso:
ganaron=length(anorexia[anorexia$diferencia > 0,"diferencia"])
#Total que perdieron peso:
perdieron=length(anorexia[anorexia$diferencia < 0,"diferencia"])
# Crear un vector con los datos de personas que ganaron y perdieron peso
ganaron <- 80 # Por ejemplo, asumiendo que 80 personas ganaron peso
perdieron <- 60 # Por ejemplo, asumiendo que 60 personas perdieron peso
# Calcular los porcentajes
total <- ganaron + perdieron
porcentaje_ganaron <- ganaron / total * 100
porcentaje_perdieron <- perdieron / total * 100
# Etiquetas
labels_ganaron <- paste("Ganaron (", round(porcentaje_ganaron), "%)", sep = "")
labels_perdieron <- paste("Perdieron (", round(porcentaje_perdieron), "%)", sep = "")
# Colores
col_ganaron <- c("orangered", "gray")
col_perdieron <- c("gray", "palegreen")
# Graficar ambas categorías en un solo gráfico de pastel
par(mfrow = c(1, 2)) # Dividir la ventana gráfica en dos
# Gráfico de personas que ganaron peso
pie(c(ganaron, total - ganaron), labels = c(labels_ganaron, ""), col = col_ganaron, main = "Personas que ganaron peso")
# Gráfico de personas que perdieron peso
pie(c(perdieron, total - perdieron), labels = c(labels_perdieron, ""), col = col_perdieron, main = "Personas que perdieron peso")
pie(c(ganaron, perdieron), labels = c("Ganaron","Perdieron"), col = c("orangered","palegreen"),main = "Personas que ganaron/perdieron peso")
2.7. La base de datos MASS posee la siguiente base de datos: “Melanoma”
que contiene 205 pacientes con melanomas y 7 columnas
#a) Obtener el número de fallecidos por Melanoma y otras causas.
fallecidos_melanoma <- length(Melanoma[Melanoma$status == 1 | Melanoma$status == 3, "status"])
fallecidos_melanoma # Muestra el número de fallecidos por Melanoma
## [1] 71
#b) Determinar la presencia y ausencia de Melanoma.
presencia_melanoma <- table(Melanoma[, "ulcer"])
presencia_melanoma # Muestra la tabla de presencia y ausencia de Melanoma
##
## 0 1
## 115 90
#c) ¿Cuál es la relación entre el tamaño del tumor y la muerte?
relacion_tumor_muerte <- table(Melanoma$thickness, Melanoma$status)
relacion_tumor_muerte # Muestra la tabla de relación entre tamaño del tumor y muerte
##
## 1 2 3
## 0.1 0 1 0
## 0.16 0 6 1
## 0.24 0 1 0
## 0.32 1 5 0
## 0.48 0 4 0
## 0.58 0 1 0
## 0.64 0 4 0
## 0.65 0 8 2
## 0.81 3 8 0
## 0.97 2 9 0
## 1.03 0 1 0
## 1.13 0 4 0
## 1.29 0 14 2
## 1.34 1 1 0
## 1.37 0 1 0
## 1.45 0 2 1
## 1.53 0 1 0
## 1.62 3 8 1
## 1.76 1 0 0
## 1.78 0 2 0
## 1.94 2 8 0
## 2.1 1 2 0
## 2.24 1 0 0
## 2.26 3 2 0
## 2.34 1 0 0
## 2.42 1 0 0
## 2.58 3 6 0
## 2.74 0 1 0
## 2.9 0 2 1
## 3.06 1 1 0
## 3.22 2 7 1
## 3.54 5 3 0
## 3.56 1 0 0
## 3.87 3 3 0
## 4.04 1 0 0
## 4.09 0 1 0
## 4.19 2 0 0
## 4.51 1 0 0
## 4.82 0 1 0
## 4.83 1 1 0
## 4.84 3 1 1
## 5.16 2 1 0
## 5.48 1 1 0
## 5.64 0 1 0
## 5.8 2 0 0
## 6.12 0 1 1
## 6.44 1 0 0
## 6.76 0 0 1
## 7.06 1 1 0
## 7.09 0 2 0
## 7.41 1 0 0
## 7.73 1 1 0
## 7.89 0 1 0
## 8.06 0 1 0
## 8.38 0 1 0
## 8.54 0 0 1
## 9.66 0 1 0
## 12.08 1 0 0
## 12.24 0 1 0
## 12.56 0 0 1
## 12.88 1 1 0
## 13.85 1 0 0
## 14.66 1 0 0
## 17.42 1 0 0
#d) Grafique el punto b de forma adecuada.
# Calcular la presencia y ausencia de Melanoma
presencia <- length(Melanoma[Melanoma$ulcer == 1, "ulcer"])
ausencia <- length(Melanoma[Melanoma$ulcer == 0, "ulcer"])
# Crear un vector con los resultados para usarlo en las gráficas
resultados <- c(presencia, ausencia)
# Graficar en un gráfico de barras
barplot(resultados, col = c("lightsalmon", "lightskyblue"),
legend.text = c("Presencia", "Ausencia"),
main = "Presencia y Ausencia de Melanoma",
xlab = "Condición",
ylab = "Cantidad")
# Graficar en un gráfico de pastel
pie(resultados, labels = c("Presencia", "Ausencia"),
col = c("lightsalmon", "lightskyblue"),
main = "Presencia y Ausencia de Melanoma")
# Graficar en un gráfico de columnas
barplot(resultados, col = c("lightsalmon", "lightskyblue"),
legend.text = c("Presencia", "Ausencia"),
main = "Presencia y Ausencia de Melanoma",
xlab = "Condición",
ylab = "Cantidad",
horiz = TRUE) # Gráfico de columnas horizontales
#2.8. La base de datos UsingR posee la siguiente base de datos:
“babyboom” que contiene la estadística de nacimiento de 44 bebes en un
periodo de 24 horas con peso y sexo, con 4 columnas.
data(babyboom)
head(babyboom)
## clock.time gender wt running.time
## 1 5 girl 3837 5
## 2 104 girl 3334 64
## 3 118 boy 3554 78
## 4 155 boy 3838 115
## 5 257 boy 3625 177
## 6 405 girl 2208 245
#a. ¿Cual es el número de niños y niñas?
aggregate(babyboom[,"gender"], by = list(babyboom[,"gender"]), FUN = length)
## Group.1 x
## 1 girl 18
## 2 boy 26
#b) ¿Cual es la cantidad de niños nacidos en las primeras 12h?
babyboom[(babyboom$clock.time / 60) <= 12,]
## clock.time gender wt running.time
## 1 5 girl 3837 5
## 2 104 girl 3334 64
## 3 118 boy 3554 78
## 4 155 boy 3838 115
## 5 257 boy 3625 177
## 6 405 girl 2208 245
## 7 407 girl 1745 247
## 8 422 boy 2846 262
## 9 431 boy 3166 271
## 10 708 boy 3520 428
length(babyboom[(babyboom$clock.time / 60) <= 12,"gender"])
## [1] 10
#c. ¿Cuantos niños nacieron por debajo de 3000gr?
babyboom[babyboom$wt < 3000,]
## clock.time gender wt running.time
## 6 405 girl 2208 245
## 7 407 girl 1745 247
## 8 422 boy 2846 262
## 13 814 girl 2576 494
## 18 1133 boy 2902 693
## 19 1209 boy 2635 729
## 29 1742 girl 2184 1062
## 31 1825 girl 2383 1105
## 40 2104 boy 2121 1264
#d. ¿Relación entre peso por debajo de 3000gr y sexo?
genders <- babyboom[babyboom$wt < 3000,]
table(genders$gender,genders$wt)
##
## 1745 2121 2184 2208 2383 2576 2635 2846 2902
## girl 1 0 1 1 1 1 0 0 0
## boy 0 1 0 0 0 0 1 1 1
#e) ¿Grafique el promedio de pesos total, de niños y de niñas de forma adecuada?
aggregate(babyboom$wt, by = list(babyboom[,"gender"]), FUN = mean)
## Group.1 x
## 1 girl 3132.444
## 2 boy 3375.308
# Calcular el promedio de pesos por género
promedio_peso <- aggregate(babyboom$wt, by = list(babyboom$gender), FUN = mean)
# Graficar el promedio de pesos por género
barplot(promedio_peso$x, names.arg = promedio_peso$Group.1,
col = c("lightblue", "pink"),
main = "Promedio de pesos por género",
xlab = "Género",
ylab = "Peso (gr)")
2.9. La base de datos UsingR posee la siguiente base de datos: “Aids2”
que contiene la estadística de 2843 pacientes con sida con 4
columnas.
data(Aids2)
head(Aids2)
## state sex diag death status T.categ age
## 1 NSW M 10905 11081 D hs 35
## 2 NSW M 11029 11096 D hs 53
## 3 NSW M 9551 9983 D hs 42
## 4 NSW M 9577 9654 D haem 44
## 5 NSW M 10015 10290 D hs 39
## 6 NSW M 9971 10344 D hs 36
#a. Determine en número de contagios por estado.
aggregate(Aids2$state, by=list(Aids2[,"state"]), FUN=length)
## Group.1 x
## 1 NSW 1780
## 2 Other 249
## 3 QLD 226
## 4 VIC 588
#b. ¿Cuanto es el número de fallecidos?
totalMuertos=Aids2[Aids2$status == "D",]
length(totalMuertos$state)
## [1] 1761
# Instalar y cargar el paquete ggplot2 si aún no lo has hecho
barplot(table(Aids2$T.categ), main = "Tipos de Transmision", xlab = "Tipo de Transmision", ylab = "Numero de Pacientes", col = rainbow(length(unique(Aids2$T.categ))))
2.10. La base de datos UsingR posee la siguiente base de datos: “crime” que contiene la tasa de crímenes de 50 estados de los E.E.U.U en los años 1983 y 1993, posee 3 columnas: Estado (no marcado), y1983, y1993. Se requiere un informe con los siguientes puntos.
data(crime)
head(crime)
## y1983 y1993
## Alabama 416.0 871.7
## Alaska 613.8 660.5
## Arizona 494.2 670.8
## Arkansas 297.7 576.5
## California 772.6 1119.7
## Colorado 476.4 578.8
#a. La tasa total en 1993 fue mayor o menor que en 1983.
mean(crime$y1993)
## [1] 606.8294
mean(crime$y1983)
## [1] 437.5196
# Podemos observar que la tasa en 1993 fue mayor que la de 1983
# Calcular la media de las tasas en 1993 y 1983
tasa_1993 <- mean(crime$y1993)
tasa_1983 <- mean(crime$y1983)
# Crear un vector con los datos de las tasas
tasas <- c(tasa_1993, tasa_1983)
# Crear un vector con los años correspondientes
años <- c("1993", "1983")
# Graficar las tasas en un gráfico de barras
barplot(tasas, names.arg = años, col = c("lightblue", "lightgreen"),
main = "Comparación de tasas en 1993 y 1983",
xlab = "Año",
ylab = "Tasa")
#b. Qué estado presenta la mayor tasa de crímenes en cada año
crime[crime$y1993 == max(crime$y1993),]
## y1983 y1993
## DC 1985.4 2832.8
crime[crime$y1983 == max(crime$y1983),]
## y1983 y1993
## DC 1985.4 2832.8
#c. Que estado presenta la mayor tasa de crimen acumulado en ambos años.
crime["acumulado"]=crime$y1983 + crime$y1993
crime[crime$acumulado == max(crime$acumulado),]
## y1983 y1993 acumulado
## DC 1985.4 2832.8 4818.2
#El estado DC presenta la mayor tasa de crimen acumulado en ambos años
#d. Gráfica el punto b de forma adecuada.
library(ggplot2)
# Crear el gráfico con ggplot2 y agregar color a las barras
ggplot(crime, aes(x = row.names(crime), y = acumulado, fill = factor(acumulado))) +
geom_bar(stat = "identity") +
labs(title = "Acumulado de tasas de criminalidad por año",
x = "Año",
y = "Acumulado") +
theme_minimal()