A continuación los paquetes pertinentes para la realización del trabajo que permitieron el desarrollo de las gráficas.
library(readxl)
library(dplyr)
library(tidyverse)
library(readxl)
library(dplyr)
library(nortest)
require(car)Empezamos con la actividad 1, en la cual cargamos el archivo y obtenemos una muestra aleatoria de 50 hombres y 50 mujeres
excel <-read_excel("C:\\Users\\USUARIO\\Downloads\\Medidas del cuerpo.xlsx",skip = 1, col_names = c("diametro codo", "diametro muneca", "diametro rodilla", "circunferencia abdominal", "circunferencia muslo", "peso", "altura", "genero"))
set.seed(1382)
Hombres <- filter(excel, genero == 1)
datos.d1 <- data.frame(Hombres)
muestra.homb <- datos.d1[sample(nrow(datos.d1),size=50),0:8]
muestra.hombMujeres <- filter(excel, genero == 0)
datos.d2 <- data.frame(Mujeres)
muestra.muj <- datos.d2[sample(nrow(datos.d2),size=50),0:8]
muestra.mujmuestra.tot <- rbind(muestra.homb, muestra.muj)
muestra.totPrimero se comprueba que la muestra provenga de una distribución normal, para ello se realiza un qqplot, un histograma y un diagrama de densidad
#qqplot
par(mfrow=c(1, 2))
qqPlot(muestra.tot$diametro.codo, pch=19,
main='QQplot para el diametro del codo',
xlab='Cuantiles teóricos',
ylab='Cuantiles muestrales')## [1] 36 81
Ahora el histograma
#qqplot
hist(muestra.tot$diametro.codo, freq=TRUE,
main='Histograma para el diametro del codo',
xlab='Altura (cm)',
ylab='Frecuencia')Y el diagrama de densidad
plot(density(muestra.tot$diametro.codo))Por ultimo, se verifica con una prueba de normalidad, en este caso se usará la prueba ad.test, tomando en cuenta un nivel de significancia del 5% (0.05)
nor1 <- ad.test(muestra.tot$diametro.codo)
nor1##
## Anderson-Darling normality test
##
## data: muestra.tot$diametro.codo
## A = 0.72121, p-value = 0.0581
según el valor p, quiere decir que es posibleafirmar que la muestra proviene de la distribución normal
res1 <- t.test(muestra.tot$diametro.codo, conf.level=0.90)
res1$conf.int## [1] 13.08575 13.55225
## attr(,"conf.level")
## [1] 0.9
Con una confianza del 90% se estima que el promedio del diámetro del codo se encuentra entre dicho intyervalo, eso nos quiere decir que con un cierto grado de seguridad el promedio real de la variable se encuentra dentro de ese intervalo.
Primero el qqplot
par(mfrow=c(1, 2))
require(car) # Debe instalar antes el paquete car
qqPlot(muestra.tot$diametro.muneca, pch=19,
main='QQplot para el diametro de la muñeca',
xlab='Cuantiles teóricos',
ylab='Cuantiles muestrales')## [1] 81 60
Ahora el histograma
hist(muestra.tot$diametro.muneca, freq=TRUE,
main='Histograma para el diametro de la muñeca',
xlab='Altura (cm)',
ylab='Frecuencia')Y el diagrama de densidad
plot(density(muestra.tot$diametro.muneca))Por ultimo, se verifica con una prueba de normalidad, en este caso se usará la prueba ad.test, tomando en cuenta un nivel de significancia del 5% (0.05)
nor2 <- ad.test(muestra.tot$diametro.muneca)
nor2##
## Anderson-Darling normality test
##
## data: muestra.tot$diametro.muneca
## A = 0.85757, p-value = 0.02662
Como el valor p es superior a 0.05, eso quiere decir que es posible afirmar que la muestra proviene de la distribución normal
res2 <- t.test(muestra.tot$diametro.muneca, conf.level=0.90)
res2$conf.int## [1] 10.36809 10.69791
## attr(,"conf.level")
## [1] 0.9
Con una confianza del 90% se estima que el promedio del diámetro del codo se encuentra entre denytro del intervalo calculado
Primero el qqplot
par(mfrow=c(1, 2))
require(car) # Debe instalar antes el paquete car
qqPlot(muestra.tot$diametro.rodilla, pch=19,
main='QQplot para el diametro de rodilla',
xlab='Cuantiles teóricos',
ylab='Cuantiles muestrales')## [1] 4 81
Ahora el histograma
hist(muestra.tot$diametro.rodilla, freq=TRUE,
main='Histograma para el diametro de rodilla',
xlab='Altura (cm)',
ylab='Frecuencia')Y el diagrama de densidad
plot(density(muestra.tot$diametro.rodilla))Por ultimo, se verifica con una prueba de normalidad, en este caso se usará la prueba ad.test, tomando en cuenta un nivel de significancia del 5% (0.05)
nor3 <- ad.test(muestra.tot$diametro.rodilla)
nor3##
## Anderson-Darling normality test
##
## data: muestra.tot$diametro.rodilla
## A = 0.47772, p-value = 0.2318
Como el valor p es es superior a 0.005, eso quiere decir que es posible afirmar que la muestra proviene de la distribución normal
res3 <- t.test(muestra.tot$diametro.rodilla, conf.level=0.90)
res3$conf.int## [1] 18.61687 19.06113
## attr(,"conf.level")
## [1] 0.9
Con una confianza del 90% se estima que el promedio del diámetro del codo se encuentra entre ese intervalo
GGplot
par(mfrow=c(1, 2))
require(car) # Debe instalar antes el paquete car
qqPlot(muestra.muj$altura, pch=19,
main='QQplot para la altura de las mujeres',
xlab='Cuantiles teóricos',
ylab='Cuantiles muestrales')## [1] 5 7
Ahora el histograma
hist(muestra.muj$altura, freq=TRUE,
main='Histograma para la altura de las mujeres',
xlab='Altura (cm)',
ylab='Frecuencia')Diagrama de densidad
plot(density(muestra.muj$altura))Prueba de normalidad altura mujeres
ad.test (muestra.muj$altura)##
## Anderson-Darling normality test
##
## data: muestra.muj$altura
## A = 0.52178, p-value = 0.1758
Número de mujeres que miden menos de 165 cm
Como el valor p, cumple la prueba de normalidad
alt <- sum(muestra.muj$altura<165)
alt## [1] 27
#intervalo de confianza # x=27
res4 <- prop.test(x=alt, n=50, conf.level=0.99)
res4$conf.int## [1] 0.3556202 0.7145227
## attr(,"conf.level")
## [1] 0.99
Con una confianza del 99% se estima que la proporción de las mujeres que miden menos de 165 cm se encuentra entre dicho intervalo
qqplot
par(mfrow=c(1, 2))
require(car) # Debe instalar antes el paquete car
qqPlot(muestra.homb$circunferencia.abdominal, pch=19,
main='QQplot para la circunferencia abdominal de los hombres',
xlab='Cuantiles teóricos',
ylab='Cuantiles muestrales')## [1] 26 29
Histograma
hist(muestra.homb$circunferencia.abdominal, freq=TRUE,
main='Histograma para la circunferencia abdominal de los hombres',
xlab='Altura (cm)',
ylab='Frecuencia')Diagrama de densidad
plot(density(muestra.homb$circunferencia.abdominal))Prueba de normalidad
ad.test (muestra.homb$circunferencia.abdominal)##
## Anderson-Darling normality test
##
## data: muestra.homb$circunferencia.abdominal
## A = 0.38333, p-value = 0.3837
Como el valo p, cumple la prueba de normalidad
qqplot
par(mfrow=c(1, 2))
require(car) # Debe instalar antes el paquete car
qqPlot(muestra.muj$circunferencia.abdominal, pch=19,
main='QQplot para la circunferencia abdominal de las mujeres',
xlab='Cuantiles teóricos',
ylab='Cuantiles muestrales')## [1] 6 1
Histograma
hist(muestra.muj$circunferencia.abdominal, freq=TRUE,
main='Histograma para la circunferencia abdominal de las mujeres',
xlab='Altura (cm)',
ylab='Frecuencia')Diagrama de densidad
plot(density(muestra.muj$circunferencia.abdominal))Prueba de normalidad circuferencia abdominal mujeres
ad.test (muestra.muj$circunferencia.abdominal)##
## Anderson-Darling normality test
##
## data: muestra.muj$circunferencia.abdominal
## A = 0.37633, p-value = 0.3985
El valor p, cumple la prueba de normalidad
Respuesta
res5 <- t.test(x=muestra.homb$circunferencia.abdominal, y=muestra.muj$circunferencia.abdominal,
paired=FALSE, var.equal=TRUE, conf.level = 0.95)
res5$conf.int## [1] 2.560634 9.515366
## attr(,"conf.level")
## [1] 0.95
Así, podemos decir que a partir del intervalo de confianza anterior se puede concluir, con un nivel de confianza del 95%, que la circunferencia abdominal promedio de los hombres es superior a la circunferencia abdominal promedio de las mujeres, ya que el intervalo de confianza no incluye el cero, y por ser positivos sus límites, se puede afirmar con un nivel de confianza del 95% que el promedio circ. adbominal hombres > promedio circ. adbominal
qqplot
par(mfrow=c(1, 2))
require(car) # Debe instalar antes el paquete car
qqPlot(muestra.homb$diametro.rodilla, pch=19,
main='QQplot para el diámetro de las rodillas de los hombres',
xlab='Cuantiles teóricos',
ylab='Cuantiles muestrales')## [1] 13 4
Histograma
hist(muestra.homb$diametro.rodilla, freq=TRUE,
main='Histograma para el diámetro de las rodillas de los hombres',
xlab='Altura (cm)',
ylab='Frecuencia')Diagrama de densidad
plot(density(muestra.homb$diametro.rodilla))Prueba de normalidad
ad.test (muestra.homb$diametro.rodilla)##
## Anderson-Darling normality test
##
## data: muestra.homb$diametro.rodilla
## A = 0.594, p-value = 0.1171
Como el valor p es de 0.2, cumple la prueba de normalidad
qqplot
par(mfrow=c(1, 2))
require(car) # Debe instalar antes el paquete car
qqPlot(muestra.muj$diametro.rodilla, pch=19,
main='QQplot para el diámetro de la rodilla de las mujeres',
xlab='Cuantiles teóricos',
ylab='Cuantiles muestrales')## [1] 6 1
Histograma
hist(muestra.muj$diametro.rodilla, freq=TRUE,
main='Histograma para el diámetro de la rodilla de las mujeres',
xlab='Altura (cm)',
ylab='Frecuencia')Diagrama de densidad
plot(density(muestra.muj$diametro.rodilla))Prueba de normalidad
ad.test (muestra.muj$diametro.rodilla)##
## Anderson-Darling normality test
##
## data: muestra.muj$diametro.rodilla
## A = 0.21321, p-value = 0.8444
Como el valor p, cumple la prueba de normalidad, teniendo en cuenta un nivel de significacia del 10%
Respuesta
res6 <- t.test(x=muestra.homb$diametro.rodilla, y=muestra.muj$diametro.rodilla,
paired=FALSE, var.equal=TRUE, conf.level = 0.95)
res6$conf.int## [1] 1.451943 2.224057
## attr(,"conf.level")
## [1] 0.95
Así, podemos decir que a partir del intervalo de confianza anterior se puede concluir, con un nivel de confianza del 95%, que el diámetro de la rodilla promedio de los hombres es superior al diámetro de la rodilla promedio de las mujeres, ya que el intervalo de confianza no incluye el cero, y por ser positivos sus límites, se puede afirmar con un nivel de confianza del 95% que el promedio del diametro rodilla hombres > promedio diametro rodilla
Qqplot
par(mfrow=c(1, 2))
require(car) # Debe instalar antes el paquete car
qqPlot(muestra.muj$circunferencia.muslo, pch=19,
main='QQplot para la circunferencia del muslo de las mujeres',
xlab='Cuantiles teóricos',
ylab='Cuantiles muestrales')## [1] 1 16
Histograma
hist(muestra.muj$circunferencia.muslo, freq=TRUE,
main='Histograma parala circunferencia del muslo de las mujeres',
xlab='Altura (cm)',
ylab='Frecuencia')Diagrama de densidad
plot(density(muestra.muj$circunferencia.muslo))Prueba de normalidad circuferencia abdominal mujeres
ad.test (muestra.muj$circunferencia.muslo)##
## Anderson-Darling normality test
##
## data: muestra.muj$circunferencia.muslo
## A = 1.6087, p-value = 0.0003399
Como el valor p, sigue una distribución normal
respuesta
if (!require('devtools')) install.packages('devtools')
devtools::install_github('fhernanb/stests', force=TRUE)##
## ── R CMD build ─────────────────────────────────────────────────────────────────
##
checking for file 'C:\Users\USUARIO\AppData\Local\Temp\RtmpwN6j69\remotes2aa84cb23ffa\fhernanb-stests-ee06c4b/DESCRIPTION' ...
checking for file 'C:\Users\USUARIO\AppData\Local\Temp\RtmpwN6j69\remotes2aa84cb23ffa\fhernanb-stests-ee06c4b/DESCRIPTION' ...
✔ checking for file 'C:\Users\USUARIO\AppData\Local\Temp\RtmpwN6j69\remotes2aa84cb23ffa\fhernanb-stests-ee06c4b/DESCRIPTION' (521ms)
##
─ preparing 'stests': (413ms)
## checking DESCRIPTION meta-information ...
checking DESCRIPTION meta-information ...
✔ checking DESCRIPTION meta-information
##
─ checking for LF line-endings in source and make files and shell scripts
##
─ checking for empty or unneeded directories
##
Omitted 'LazyData' from DESCRIPTION
##
─ building 'stests_0.1.0.tar.gz'
##
##
require(stests) # Para cargar el paquete
res7 <- stests::var.test(x=muestra.muj$circunferencia.muslo, conf.level=0.90)
res7$conf.int## [1] 13.17663 25.76222
## attr(,"conf.level")
## [1] 0.9
resultX6 <- t.test(muestra.tot$diametro.codo, mu = 13)
resultX6##
## One Sample t-test
##
## data: muestra.tot$diametro.codo
## t = 2.2708, df = 99, p-value = 0.02533
## alternative hypothesis: true mean is not equal to 13
## 95 percent confidence interval:
## 13.04026 13.59774
## sample estimates:
## mean of x
## 13.319
la medida de la variable da muy cercana a 13 en ambos casos para hombres y mujeres
resultx15 <- t.test(muestra.tot$circunferencia.muslo, mu = 55, alternative = "greater")
resultx15 ##
## One Sample t-test
##
## data: muestra.tot$circunferencia.muslo
## t = 3.2121, df = 99, p-value = 0.0008889
## alternative hypothesis: true mean is greater than 55
## 95 percent confidence interval:
## 55.66666 Inf
## sample estimates:
## mean of x
## 56.38
en la medida de la variable se puede apreciar un valor mayor a 57
resultX7 <- t.test(muestra.homb$diametro.muneca, muestra.muj$diametro.muneca, alternative = "two.sided", var.equal = TRUE)
resultX7##
## Two Sample t-test
##
## data: muestra.homb$diametro.muneca and muestra.muj$diametro.muneca
## t = 11.574, df = 98, p-value < 2.2e-16
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 1.244468 1.759532
## sample estimates:
## mean of x mean of y
## 11.284 9.782
las medidas no son iguales siendo un 11 para hombres y un 9 para mujeres
resultx13 <- t.test(muestra.homb$circunferencia.abdominal, muestra.muj$circunferencia.abdominal, alternative = "greater", var.equal = FALSE)
resultx13##
## Welch Two Sample t-test
##
## data: muestra.homb$circunferencia.abdominal and muestra.muj$circunferencia.abdominal
## t = 3.4458, df = 96.325, p-value = 0.0004226
## alternative hypothesis: true difference in means is greater than 0
## 95 percent confidence interval:
## 3.127746 Inf
## sample estimates:
## mean of x mean of y
## 87.514 81.476
en el promedio la medida de los hombres es mayor siendo esta de 88 y de las mujeres 83
resultx13.muj <- t.test(muestra.muj$circunferencia.abdominal, alternative = "greater", sigma.squared = 80, conf.level = 0.99)
resultx13.muj##
## One Sample t-test
##
## data: muestra.muj$circunferencia.abdominal
## t = 61.807, df = 49, p-value < 2.2e-16
## alternative hypothesis: true mean is greater than 0
## 99 percent confidence interval:
## 78.30579 Inf
## sample estimates:
## mean of x
## 81.476
la varianza de la variable es ligeramente superior a 80
valor_referencia <- 1.5
resultx8 <- t.test(muestra.homb$diametro.rodilla, alternative = "two.sided", mu = valor_referencia, conf.level = 0.99)
resultx8##
## One Sample t-test
##
## data: muestra.homb$diametro.rodilla
## t = 130.47, df = 49, p-value < 2.2e-16
## alternative hypothesis: true mean is not equal to 1.5
## 99 percent confidence interval:
## 19.38296 20.13304
## sample estimates:
## mean of x
## 19.758
a varianza de la variable para hombres es diferente de 1.5
Podemos crear la gráfica de esta manera
qplot(altura, peso, data = muestra.tot, geom = "point") + geom_smooth(method = "lm", se = FALSE)
Ahora obtenemos los coeficientes creando un modelo lineal
modelo <- lm(peso ~ altura, data = muestra.tot)
modelo##
## Call:
## lm(formula = peso ~ altura, data = muestra.tot)
##
## Coefficients:
## (Intercept) altura
## -125.554 1.134
Luego creamos un modelo lineal con eso y obtenemos un resumen detallado de este modelo
summary(modelo)##
## Call:
## lm(formula = peso ~ altura, data = muestra.tot)
##
## Residuals:
## Min 1Q Median 3Q Max
## -18.453 -6.242 -1.304 5.570 24.563
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -125.55372 15.87588 -7.908 3.98e-12 ***
## altura 1.13441 0.09262 12.248 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 8.588 on 98 degrees of freedom
## Multiple R-squared: 0.6049, Adjusted R-squared: 0.6008
## F-statistic: 150 on 1 and 98 DF, p-value: < 2.2e-16
Podemos crear la gráfica de esta manera
qplot(circunferencia.abdominal, peso, data = muestra.tot, geom = "point") + geom_smooth(method = "lm", se = FALSE)
Aahora obtenemos los coeficientes creando un modelo lineal
modelo2 <- lm(peso ~ circunferencia.abdominal, data = muestra.tot)
modelo2##
## Call:
## lm(formula = peso ~ circunferencia.abdominal, data = muestra.tot)
##
## Coefficients:
## (Intercept) circunferencia.abdominal
## -24.136 1.098
Luego creamos un modelo lineal con eso y obtenemos un resumen detallado de este modelo
summary(modelo2)##
## Call:
## lm(formula = peso ~ circunferencia.abdominal, data = muestra.tot)
##
## Residuals:
## Min 1Q Median 3Q Max
## -19.212 -6.994 -1.520 7.428 17.764
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -24.13582 8.42910 -2.863 0.00513 **
## circunferencia.abdominal 1.09770 0.09917 11.068 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.108 on 98 degrees of freedom
## Multiple R-squared: 0.5556, Adjusted R-squared: 0.551
## F-statistic: 122.5 on 1 and 98 DF, p-value: < 2.2e-16
Podemos crear la gráfica de esta manera
qplot(circunferencia.muslo, peso, data = muestra.tot, geom = "point") + geom_smooth(method = "lm", se = FALSE)
Ahora obtenemos los coeficientes creando un modelo lineal
modelo3 <- lm(peso ~ circunferencia.muslo, data = muestra.tot)
modelo3##
## Call:
## lm(formula = peso ~ circunferencia.muslo, data = muestra.tot)
##
## Coefficients:
## (Intercept) circunferencia.muslo
## -33.539 1.812
Luego creamos un modelo lineal con eso y obtenemos un resumen detallado de este modelo
summary(modelo3)##
## Call:
## lm(formula = peso ~ circunferencia.muslo, data = muestra.tot)
##
## Residuals:
## Min 1Q Median 3Q Max
## -17.976 -9.079 -1.786 8.181 23.144
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -33.539 14.815 -2.264 0.0258 *
## circunferencia.muslo 1.812 0.262 6.915 4.81e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 11.2 on 98 degrees of freedom
## Multiple R-squared: 0.3279, Adjusted R-squared: 0.3211
## F-statistic: 47.82 on 1 and 98 DF, p-value: 4.808e-10
library(openxlsx) excel <- muestra.tot write.xlsx(excel, “Datosexcel.xlsx”)