2.1

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)
hist(brightness)

DensityPlot(brightness)

2.2

boxplot(brightness)

si presenta valores atipicos, siendo el segundo valor atipico más pequeño el 4.

quantile(brightness, 0.25)
##    25% 
## 7.7025
quantile(brightness, 0.75)
##  75% 
## 9.13
quantile(brightness, 0.25)-quantile(brightness, 0.75)
##     25% 
## -1.4275
lower_limit <- 7.7025 - 1.5 * 1.4275  # Límite inferior
upper_limit <- 9.13 + 1.5 * 1.4275    # Límite superior
cat("Límite inferior:", lower_limit, "\n")
## Límite inferior: 5.56125
cat("Límite superior:", upper_limit, "\n")
## Límite superior: 11.27125
brightness.without <- brightness[brightness >= lower_limit & brightness <= upper_limit]
if (!require(MASS)) install.packages("MASS")
library(MASS)
data("UScereal")
library(ggplot2)
UScereal$mfr <- as.factor(UScereal$mfr)
UScereal$shelf <- as.factor(UScereal$shelf)
ggplot(UScereal, aes(x = mfr, fill = shelf)) +
  geom_bar(position = "dodge") +
  labs(title = "Relación entre Manufacturer y Shelf", x = "Manufacturer (mfr)", fill = "Shelf") +
  theme_minimal()

ggplot(UScereal, aes(x = shelf, y = fat)) +
  geom_boxplot() +
  labs(title = "Relación entre Fat y Shelf", x = "Shelf", y = "Fat") +
  theme_minimal()

2.3

data("mammals")
head(mammals)
##                    body brain
## Arctic fox        3.385  44.5
## Owl monkey        0.480  15.5
## Mountain beaver   1.350   8.1
## Cow             465.000 423.0
## Grey wolf        36.330 119.5
## Goat             27.660 115.0
cor(mammals$body, mammals$brain)
## [1] 0.9341638
ggplot(mammals, aes(x = body, y = brain)) +
  geom_point() +
  labs(title = "Relación entre Body y Brain",
       x = "Body Weight (kg)",
       y = "Brain Weight (g)") +
  theme_minimal()

mammals$log_body <- log(mammals$body)
mammals$log_brain <- log(mammals$brain)
cor(mammals$log_body, mammals$log_brain)
## [1] 0.9595748
ggplot(mammals, aes(x = log_body, y = log_brain)) +
  geom_point() +
  labs(title = "Relación entre log(Body) y log(Brain)",
       x = "Log Body Weight",
       y = "Log Brain Weight") +
  theme_minimal()

2.4

data(emissions)
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
summary(emissions)
##       GDP            perCapita          CO2        
##  Min.   :  59900   Min.   : 2507   Min.   :  54.0  
##  1st Qu.: 123100   1st Qu.:13393   1st Qu.:  77.0  
##  Median : 206250   Median :20993   Median : 200.0  
##  Mean   : 830427   Mean   :17724   Mean   : 669.4  
##  3rd Qu.: 683500   3rd Qu.:22250   3rd Qu.: 547.5  
##  Max.   :8083000   Max.   :29647   Max.   :6750.0
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 ...

relacion entre GDP

cor(emissions[, c("GDP", "perCapita", "CO2")], use = "complete.obs")
##                 GDP perCapita       CO2
## GDP       1.0000000 0.4325303 0.9501753
## perCapita 0.4325303 1.0000000 0.2757962
## CO2       0.9501753 0.2757962 1.0000000

Graficar las correlaciones Gráfico 1: Relación entre GDP y CO2

ggplot(emissions, aes(x = GDP, y = CO2)) +
  geom_point(color = "blue", size = 3) +
  labs(title = "Relación entre GDP y CO2", x = "GDP", y = "CO2") +
  theme_minimal()

Gráfico 2: Relación entre perCapita y CO2

ggplot(emissions, aes(x = perCapita, y = CO2)) +
  geom_point(color = "green", size = 3) +
  labs(title = "Relación entre perCapita y CO2", x = "Per Capita Emissions", y = "CO2") +
  theme_minimal()

gráfico 3.

ggplot(emissions, aes(x = GDP, y = perCapita)) +
  geom_point(color = "red", size = 3) +  # Puntos en rojo y tamaño ajustado
  labs(
    title = "Relación entre GDP y Per Capita",
    x = "GDP",
    y = "Per Capita Emissions"
  ) +
  theme_minimal()

Rntrenar modelo para CO2

lm(CO2 ~ GDP + perCapita, data = emissions)
## 
## Call:
## lm(formula = CO2 ~ GDP + perCapita, data = emissions)
## 
## Coefficients:
## (Intercept)          GDP    perCapita  
##   5.100e+02    8.406e-04   -3.039e-02

summary

summary(CO2 ~ GDP + perCapita, data = emissions)
## CO2      N= 26  
## 
## +---------+-----------------+--+---------+
## |         |                 | N|      CO2|
## +---------+-----------------+--+---------+
## |      GDP|[  59900, 124900)| 7|  95.0000|
## |         |[ 124900, 236300)| 6| 138.1667|
## |         |[ 236300,1240000)| 7| 619.2857|
## |         |[1240000,8083000]| 6|1929.1667|
## +---------+-----------------+--+---------+
## |perCapita|    [ 2507,15074)| 7| 477.1429|
## |         |    [15074,21010)| 6| 189.8333|
## |         |    [21010,22868)| 7| 646.4286|
## |         |    [22868,29647]| 6|1400.0000|
## +---------+-----------------+--+---------+
## |  Overall|                 |26| 669.3846|
## +---------+-----------------+--+---------+

partir en 4

par(mfrow = c(2, 2))

2.5. Anorexia contains information on weight change in female patients.

data("anorexia")
head(anorexia)    # Primeras filas
##   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
summary(anorexia) # Resumen estadístico
##   Treat        Prewt           Postwt      
##  CBT :29   Min.   :70.00   Min.   : 71.30  
##  Cont:26   1st Qu.:79.60   1st Qu.: 79.33  
##  FT  :17   Median :82.30   Median : 84.05  
##            Mean   :82.41   Mean   : 85.17  
##            3rd Qu.:86.00   3rd Qu.: 91.55  
##            Max.   :94.90   Max.   :103.60
str(anorexia)     # Estructura de los datos
## 'data.frame':    72 obs. of  3 variables:
##  $ Treat : Factor w/ 3 levels "CBT","Cont","FT": 2 2 2 2 2 2 2 2 2 2 ...
##  $ Prewt : num  80.7 89.4 91.8 74 78.1 88.3 87.3 75.1 80.6 78.4 ...
##  $ Postwt: num  80.2 80.1 86.4 86.3 76.1 78.1 75.1 86.7 73.5 84.6 ...

Calcular cambio de peso

anorexia$WeightChange <- anorexia$Postwt - anorexia$Prewt
treatment_effectiveness <- aggregate(WeightChange ~ Treat, data = anorexia, mean)

treatment_effectiveness[order(-treatment_effectiveness$WeightChange), ]
##   Treat WeightChange
## 3    FT     7.264706
## 1   CBT     3.006897
## 2  Cont    -0.450000

el tratamiento más efectivo es el tratamiento 3FT. pacientes que ganaron o perdieron peso

patients_gained <- sum(anorexia$WeightChange > 0)
patients_lost <- sum(anorexia$WeightChange < 0)
cat("Pacientes que ganaron peso:", patients_gained, "\n")
## Pacientes que ganaron peso: 42
cat("Pacientes que perdieron peso:", patients_lost, "\n")
## Pacientes que perdieron peso: 29
# Generar los vectores de datos
set.seed(123)
vector1 <- rnorm(50, mean = 10, sd = 2)
vector2 <- rnorm(50, mean = 12, sd = 2)

# Prueba de normalidad
cat("Prueba de normalidad (Shapiro-Wilk):\n")
## Prueba de normalidad (Shapiro-Wilk):
shapiro_vector1 <- shapiro.test(vector1)
print(shapiro_vector1)
## 
##  Shapiro-Wilk normality test
## 
## data:  vector1
## W = 0.98928, p-value = 0.9279
shapiro_vector2 <- shapiro.test(vector2)
print(shapiro_vector2)
## 
##  Shapiro-Wilk normality test
## 
## data:  vector2
## W = 0.99073, p-value = 0.9618
# Prueba t de Student
cat("\nPrueba t (varianzas iguales):\n")
## 
## Prueba t (varianzas iguales):
t_test_equal <- t.test(vector1, vector2, var.equal = TRUE)
print(t_test_equal)
## 
##  Two Sample t-test
## 
## data:  vector1 and vector2
## t = -6.0718, df = 98, p-value = 2.403e-08
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -2.950893 -1.497126
## sample estimates:
## mean of x mean of y 
##  10.06881  12.29282
cat("\nPrueba t (varianzas desiguales):\n")
## 
## Prueba t (varianzas desiguales):
t_test_unequal <- t.test(vector1, vector2, var.equal = FALSE)
print(t_test_unequal)
## 
##  Welch Two Sample t-test
## 
## data:  vector1 and vector2
## t = -6.0718, df = 97.951, p-value = 2.406e-08
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
##  -2.950897 -1.497122
## sample estimates:
## mean of x mean of y 
##  10.06881  12.29282

Explicación En el caso de la prueba de normalidad se tiene p-value de 0.05, lo que indica que no se rechaza la hipótesis nula, lo que quiere decir que los datos se ajustan a una distribución normal. De acuerdo con la prueba t, el p-value es menor a 0.05, lo que indica que existe una diferencia significativa entre las medias de los dos vectores.

2.7. normality test and t-student: generate two vectors of 50 different data using the rnom and binorm function and calculate:

# Generar el primer vector (distribución normal)
set.seed(123)  # Fijar semilla para reproducibilidad
vector1 <- rnorm(50, mean = 10, sd = 2)  # Media = 10, Desviación estándar = 2


vector2 <- rbinom(50, size = 20, prob = 0.5)  
shapiro_vector1 <- shapiro.test(vector1)
cat("Prueba de normalidad para vector1 (rnorm):\n")
## Prueba de normalidad para vector1 (rnorm):
shapiro_vector2 <- shapiro.test(vector2)
cat("\nPrueba de normalidad para vector2 (rbinom):\n")
## 
## Prueba de normalidad para vector2 (rbinom):

prueba t

t_test_equal <- t.test(vector1, vector2, var.equal = TRUE)
cat("\nPrueba t (varianzas iguales):\n")
## 
## Prueba t (varianzas iguales):
t_test_unequal <- t.test(vector1, vector2, var.equal = FALSE)
cat("\nPrueba t (varianzas desiguales):\n")
## 
## Prueba t (varianzas desiguales):

explicación: evalúa si los datos siguen una distribución normal: para vector1 (distribución normal generada con rnorm), es probable que el p-value sea mayor a 0.05, indicando que los datos son normales; mientras que para vector2 (distribución binomial generada con rbinom), el p-value podría ser menor a 0.05, sugiriendo que no sigue una distribución normal. La prueba t de Student compara las medias de los dos vectores: si el p-value es menor a 0.05, se concluye que hay una diferencia significativa entre las medias; de lo contrario, las medias no son significativamente diferentes. Ambas pruebas permiten analizar si las características y diferencias de los datos son estadísticamente relevantes.

2.8. generate one vector of 100 different data using and calculate

set.seed(123)  
vector1 <- rnorm(100, mean = 10, sd = 2)  

Generar Histograma

hist(vector1, main = "Histograma del primer vector", xlab = "Valores", col = "blue", border = "black")

Generar el segundo vector de 100 datos aleatorios

set.seed(456)  
vector2 <- rnorm(100, mean = 12, sd = 3) 

`` Histograma segundo vector

hist(vector2, main = "Histograma del segundo vector", xlab = "Valores", col = "green", border = "black")

resumen estadistico ambos vectores

summary1 <- summary(vector1)
summary2 <- summary(vector2)
cat("\nResumen del primer vector:\n")
## 
## Resumen del primer vector:
print(summary1)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   5.382   9.012  10.124  10.181  11.384  14.375
cat("\nResumen del segundo vector:\n")
## 
## Resumen del segundo vector:
print(summary2)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   5.236  10.402  12.234  12.362  14.410  18.840

2.9 pwr

library(pwr)

calcular tamaño de muestra simple

result <- pwr.t.test(d = 0.5, power = 0.8, sig.level = 0.05, type = "two.sample", alternative = "two.sided")
print(result)
## 
##      Two-sample t test power calculation 
## 
##               n = 63.76561
##               d = 0.5
##       sig.level = 0.05
##           power = 0.8
##     alternative = two.sided
## 
## NOTE: n is number in *each* group

2.10 Ejemplo relacionado con Tesis

# Crear un dataset simulado
set.seed(123)  # Semilla para reproducibilidad
obesity_data <- data.frame(
  ID = 1:200,  # Identificador único
  Age = sample(5:18, 200, replace = TRUE),  # Edades entre 5 y 18 años
  BMI = round(rnorm(200, mean = 25, sd = 5), 1),  # Índice de masa corporal
  Obese = ifelse(rnorm(200, mean = 25, sd = 5) > 30, "Yes", "No")  # Clasificación de obesidad
)
head(obesity_data)
##   ID Age  BMI Obese
## 1  1   7 24.1   Yes
## 2  2  18 17.2    No
## 3  3   7 23.7    No
## 4  4  14 29.8    No
## 5  5   6 29.3    No
## 6  6  10 27.1    No

head(obesity_data)

filtered_data <- obesity_data[obesity_data$Age >= 9 & obesity_data$Age <= 11, ]
print(filtered_data)
##      ID Age  BMI Obese
## 6     6  10 27.1    No
## 8     8   9 28.0    No
## 11   11  10 21.2   Yes
## 15   15   9 30.6    No
## 26   26  11 19.5    No
## 35   35  11 29.2    No
## 36   36   9 13.3    No
## 40   40  11 24.9    No
## 44   44  11 21.4    No
## 47   47   9 27.7   Yes
## 48   48  11 15.9    No
## 49   49   9 15.9    No
## 51   51  10 22.2   Yes
## 55   55   9 35.1    No
## 64   64  10 24.0   Yes
## 65   65   9 29.9    No
## 71   71  10 23.0    No
## 74   74  10 20.9    No
## 75   75  10 34.5    No
## 76   76  11 28.5    No
## 78   78  10 31.8    No
## 84   84   9 18.6    No
## 85   85  10 36.9    No
## 89   89  10 18.1    No
## 93   93  11 20.6    No
## 104 104  11 24.8    No
## 106 106  11 26.1    No
## 107 107  10 20.1    No
## 109 109   9 19.8    No
## 110 110   9 27.2    No
## 119 119  10 27.5    No
## 126 126  10 29.5   Yes
## 134 134  11 16.8    No
## 136 136  11 23.3    No
## 138 138  11 20.4    No
## 140 140  10 23.0    No
## 142 142  11 23.7    No
## 145 145   9 29.5    No
## 146 146  10 23.3    No
## 148 148   9 27.3    No
## 149 149  11 15.2    No
## 158 158  11 34.0    No
## 159 159  10 30.3    No
## 162 162  11 31.1    No
## 168 168  11 27.0    No
## 177 177  10 23.3    No
## 186 186  10 27.4    No
## 193 193  11 28.9    No
## 196 196   9 30.5    No

personas en el rango de edad

filtered_data <- obesity_data[obesity_data$Age >= 9 & obesity_data$Age <= 11, ]
cat("Número de personas entre 9 y 11 años:", nrow(filtered_data), "\n")
## Número de personas entre 9 y 11 años: 49