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