Este trabajo recoge la ̇ultima parte del curso y debe ser presentado
en formato pdf o en Rmarkdown. Adicionalmente, se debe incluÌr la base
de datos obtenida en formato excel. Recuerde que es el trabajo final y,
por lo tanto, deben aparecer los nombres de los integrantes del grupo y
todos los elementos que crean pertinentes para la mejor valoración del
trabajo.
La tabla adjunta contiene los datos de medidas antropomÈtricas de un grupo de 507 individuos con 8 variables (la base de datos original contiene 25 y usted puede verla en el fichero de datos: body_dat.csv que se encuentra en https://jse.amstat.org/v11n2/datasets.heinz.html)
Cree una semilla con los últimos dígitos de las cédulas de los integrantes del grupo, obtenga una muestra de 50 individuos hombres y 50 individuos mujeres con las variables arriba mencionadas.
set.seed(9953)
# Crear un subconjunto de hombres
hombres <- Medidas_del_cuerpo[Medidas_del_cuerpo$X25 == 1, ]
# Extraer una muestra aleatoria de 50 hombres
hombres <- hombres[sample(nrow(hombres), 50), ]
# Crear un subconjunto de mujeres
mujeres <- Medidas_del_cuerpo[Medidas_del_cuerpo$X25 == 0, ]
# Extraer una muestra aleatoria de 50 mujeres
mujeres <- mujeres[sample(nrow(mujeres), 50), ]
# Combinar las muestras en un solo dataframe
muestra1 <- rbind(hombres, mujeres)
table(muestra1$X25) # Comprobamos que tenemos 50 hombresy 50 mujeres
##
## 0 1
## 50 50
attach(muestra1)
a. Construya intervalos de confianza del 90% para el promedio de las 3 primeras variables. Escriba la interpretación en el contexto de cada caso.
Para el primer caso se analizará la suma del diámetro de los dos codos en centimetros para los hombres
Se calcula la media, la desviación estándar y el error estándar para usarlos al momento de sacar los límites de nuestra gráfica
Con media de:
mean(hombres$X6)
## [1] 14.424
media <- mean(hombres$X6)
Y desviación estándar:
sd(hombres$X6)
## [1] 0.9047629
desv <- sd(hombres$X6)
n=50
z <- 1.645 #90%
errorst <- desv/sqrt(n)
lim_inf <- media-(z*errorst)
lim_sup <- media+(z*errorst)
Obteniendo como límite inferior:
lim_inf
## [1] 14.21352
Y como límite superior:
lim_sup
## [1] 14.63448
Ahora bien, tenemos las siguientes gráficas que ayudan a entender
mejor los resultados obtenidos, primero se evidencia la normal con rango
aproximado desde 11.5 hasta: 17.5.
Luego, para apreciar mejor los límites donde se ubica el intervalo de confianza del 90% se procede a delimitar con dos líneas y a colorear.
Concluyendo que el 90% de los hombres se encuentran en un intérvalo
entre 14.17 y 14.67 centimetros.
-> Ahora se hará el mismo estudio pero con los datos obtenidos de las mujeres
Se calcula la media, la desviación estándar y el error estándar para usarlos al momento de sacar los límites de nuestra gráfica
Con media de:
mean(mujeres$X6)
## [1] 12.304
media1 <- mean(mujeres$X6)
Y desviación estándar:
sd(mujeres$X6)
## [1] 0.823125
desv1 <- sd(mujeres$X6)
n=50
z <- 1.645 #90%
errorst1 <- desv1/sqrt(n)
lim_inf1 <- media1-(z*errorst1)
lim_sup1 <- media1+(z*errorst1)
Obteniendo como límite inferior:
lim_inf1
## [1] 12.11251
Y como límite superior:
lim_sup1
## [1] 12.49549
Se tiene la siguiente gráfica:
De igual manera que antes, se trazan los límites en la curva:
Concluyendo que el 90% de las mujeres tienen una medida entre 12.11
y 12.49 centimetros.
Diámetro de muñeca en hombres.
Se calcula la media, la desviación estándar y el error
estándar para usarlos al momento de sacar los límites de nuestra
gráfica
Con media de:
mean(hombres$X7)
## [1] 11.234
media2 <- mean(hombres$X7)
Y desviacion estándar:
sd(hombres$X7)
## [1] 0.7388933
desv2 <- sd(hombres$X7)
n=50
z <- 1.645 #90%
errorst2 <- desv2/sqrt(n)
lim_inf2 <- media2-(z*errorst2)
lim_sup2 <- media2+(z*errorst2)
Obteniendo como límite inferior:
lim_inf2
## [1] 11.06211
Y como límite superior:
lim_sup2
## [1] 11.40589
Se trazan los límites en la curva:
Concluyendo que el diametro de la suma de las muñecas del 90% de
los hombres están en el rango de media de 11.06 y 11.40 centimetros.
Diámetro de muñeca en mujeres
Se calcula la media, la desviación estándar y el error
estándar para usarlos al momento de sacar los límites de nuestra
gráfica
Con media de:
mean(mujeres$X7)
## [1] 9.764
media3 <- mean(mujeres$X7)
Y desviacion estándar:
sd(mujeres$X7)
## [1] 0.6294669
desv3 <- sd(mujeres$X7)
n=50
z <- 1.645 #90%
errorst3 <- desv3/sqrt(n)
lim_inf3 <- media3-(z*errorst3)
lim_sup3 <- media3+(z*errorst3)
Obteniendo como límite inferior:
lim_inf3
## [1] 9.617562
Y como límite superior:
lim_sup3
## [1] 9.910438
Se trazan los límites en la curva:
Se concluye que la suma del diametro de las muñecas del 90% de las
mujeres está en el rango entre 9.17 y 9.91 centimetros. con una
distribución que está en todo el centro de la curva normal como se
aprecia en las gráficas.
Diámetro de rodilla en hombres.
Se calcula la media, la desviación estándar y el error
estándar para usarlos al momento de sacar los límites de nuestra
gráfica
Con media de:
mean(hombres$X8)
## [1] 19.464
media4 <- mean(hombres$X8)
Y desviacion estándar:
sd(hombres$X8)
## [1] 1.053228
desv4 <- sd(hombres$X8)
n=50
z <- 1.645 #90%
errorst4 <- desv4/sqrt(n)
lim_inf4 <- media4-(z*errorst4)
lim_sup4 <- media4+(z*errorst4)
Obteniendo como límite inferior:
lim_inf4
## [1] 19.21898
Y como límite superior:
lim_sup4
## [1] 19.70902
Se trazan los límites en la curva:
Diámetro de rodilla en mujeres.
Se calcula la media, la desviación estándar y el error
estándar para usarlos al momento de sacar los límites de nuestra
gráfica
Con media de:
mean(mujeres$X8)
## [1] 17.874
media5 <- mean(mujeres$X8)
Y desviacion estándar:
sd(mujeres$X8)
## [1] 1.157726
desv5 <- sd(mujeres$X8)
n=50
z <- 1.645 #90%
errorst5 <- desv5/sqrt(n)
lim_inf5 <- media5-(z*errorst5)
lim_sup5 <- media5+(z*errorst5)
Obteniendo como límite inferior:
lim_inf5
## [1] 17.60467
Y como límite superior:
lim_sup5
## [1] 18.14333
Se trazan los límites en la curva:
Comprendiendo que el diametro de rodilla del 90% de las mujeres
se encuentran en un rango comprendido por los límites 17.60 y 18.14
centimetros.
b. Construya un intervalo de
confianza del 99% para la proporción de las mujeres que miden menos de
165 cm. Interprete.
Para la variable de estatura de las mujeres, se debe conocer el número de mujeres que miden menos de 165 centimetros, siendo este nuestro x. Para entender mejor se hace una función que arroja el número “7” si una mujer mide menos de 165 centimetros y “9” si mide más.
x=ifelse(mujeres$X24<165,7,9)
x
## [1] 7 7 7 7 9 7 7 7 9 7 7 9 9 9 9 7 9 9 9 9 9 9 9 9 9 7 9 9 7 9 9 7 7 9 7 7 9 7
## [39] 9 7 9 9 9 7 7 9 9 7 7 7
Haciendo la respectiva cuenta se tiene que un total de 23 mujeres miden menos de 165 centimetros y se reemplaza en nuestra x.
x= 23 #numero de exitos 23
n=50 #total de casos
nc=0.99 #Intervalo de confianza
xbarra=x/n
se= sqrt((xbarra*(1-xbarra))/n)
f= qnorm((1+nc)/2)
icprop=c(xbarra-(f*se),xbarra,xbarra+(f*se))
icprop
## [1] 0.2784451 0.4600000 0.6415549
Obteniendo como resultado un intérvalo desde 0.27 hasta 0.64 con un
99% de confianza de que las mujeres que miden menos de 165 centimetros
estén ahí.
Es decir que existe un 99% de confianza de que la
proporcion de la población de mujeres que miden menos de 165 centimetros
estén entre el 0.27 o 27% y 0.64 o 64%.
c. Construya un intervalo del 95% para la diferencia de promedios de la circunferencia abdominal entre hombres y mujeres. Interprete.
Para calcular el intervalo de confianza de la diferencia de promedios de la medida abdominal de hombres y mujeres se utilizará la función t.test.
hombres15 <- c(hombres$X13)
mujeres15 <- c(mujeres$X13)
resultado <- t.test(hombres15,mujeres15, conf.level=0.95)
resultado
##
## Welch Two Sample t-test
##
## data: hombres15 and mujeres15
## t = 2.7702, df = 97.992, p-value = 0.006703
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 1.439154 8.708846
## sample estimates:
## mean of x mean of y
## 87.352 82.278
Simplificando lo anterior se tiene un intérvalo con límite inferior y superior descritos a continuación:
resultadosimplificado <- resultado$conf.int
cat(resultadosimplificado[1],resultadosimplificado[2])
## 1.439154 8.708846
Concluyendo que el intervalo de confianza del 95% para la diferencia
de promedios de las medidas abdominales de hombres y mujeres se
encuentra entre 1.43 y 8.70.
d. Construya un intervalo del 95% para la diferencia de
promedios de las rodillas entre hombres y mujeres. Interprete.
Primero se verifica si los datos tienen una distribucion normal.
hist(hombres$X8, ylab='Frecuencia', xlab ='diametro rodillas',
main='Histograma diametro rodillas hombres')
hist(mujeres$X8, ylab='Frecuencia', xlab ='diametro rodillas',
main='Histograma diametro rodillas mujeres')
Una vez comprobada la distribucion normal de las muestras, hallamos el intervalo de confianza.
t.test(x=hombres$X8, y=mujeres$X8, paired = FALSE, var.equal = TRUE, conf.level = 0.95)
##
## Two Sample t-test
##
## data: hombres$X8 and mujeres$X8
## t = 7.1834, df = 98, p-value = 1.339e-10
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## 1.150753 2.029247
## sample estimates:
## mean of x mean of y
## 19.464 17.874
A partir del intervalo de confianza anterior se puede concluir, con
un nivel de confianza del
95%, que el diametro de las rodillas de los hombres es superior al
diametro de las rodillas de las mujeres. Para este intervalo de
confianza asumimos que las varianzas de los datos son iguales. A demas
el intervalo de confianza varia entre 1.15 y 2.03, al no incluir el 0 y
ser positivos, se puede decir con el 95% de confianza que el diametro de
la circunferencia de las rodillas de los hombres es mayor que el de las
mujeres.
e. Construya intervalos de confianza del 90% para la varianza poblacional de la circunferencia del muslo para las mujeres.
Comprobamos que la muestra de la circunferencia de muslos de mujeres tiene distribucion normal.
hist(mujeres$X8, ylab='Frecuencia', xlab ='circunferencia muslos',
main='Histograma circuferencia muslos mujeres')
Una vez comprobado que tiene una distribucion normal procedemos a hallar el intervalo de confianza.
mujeress <- c(mujeres$X15)
mujeress
## [1] 56.5 56.3 54.8 53.0 54.7 53.1 52.1 54.0 52.9 56.8 57.4 69.0 60.2 55.6 65.6
## [16] 54.3 53.2 58.0 61.5 53.6 57.9 55.8 56.6 64.3 55.5 56.8 55.1 56.2 50.2 59.2
## [31] 53.4 54.0 53.4 51.6 57.2 69.4 57.6 54.5 57.0 53.5 59.0 53.2 51.2 52.8 61.5
## [46] 62.0 61.6 56.4 53.4 51.0
varianza <- var(mujeress)
varianza
## [1] 18.34053
n <- length(mujeress)
# Grados de libertad para la distribución chi-cuadrado
df <- n - 1
# Cálculo de los cuantiles de la distribución chi-cuadrado
cuantil_inf <- qchisq(0.05/2, df)
cuantil_sup <- qchisq(1 - 0.05/2, df)
# Cálculo del intervalo de confianza
intervalo_confianza <- c((df * varianza) / cuantil_sup, (df * varianza) / cuantil_inf)
# Imprimir el resultado
cat("Intervalo de confianza:", intervalo_confianza[1], "-", intervalo_confianza[2], "\n")
## Intervalo de confianza: 12.79771 - 28.48006
Con esto podemos decir que el intervalo de confianza del 90% indica que la varianza de la circunferencia de los musculos de las mujeres varia entre 12.79771 y 28.48006
a. Elabore una prueba de hipótesis con α = 0.05 para probar si la media de la variable X6 es diferente de 13 cm.
Lo primero será verificar si la muestra proviene de una distribución normal:
#Comprobar si viene de una distribución normal con el Anderson-Darling normality test
ad.test(X6)$p.value*100
## [1] 23.16689
hist(X6,breaks = 10)
De donde podemos decir que ya que el p-value = 0.2317 (23.17 %) es mayor
que el valor de significancia α = 0.05 (5%), se puede asumir que la
muestra proviene de una distribución normal, sin embargo, es importante
decir que al estar trabajando con muestras grandes no es importante que
se demuestre normalidad, por lo que lo anterior es algo más de
procedimiento.
Después de observar si la muestra proviene de una distribución normal, debemos establecer nuestra hipótesi nula y alternativa como vemos a continuación:
\[H_0: \mu = 13 \quad cm\] \[H_1: \mu \neq 13 \quad cm\] Y ahora procederemos a aplicar nuestra prueba de hipótesis con la función t.test de R:
#H0: mu = 13, H1: mu != 13
t.test(X6, alternative='two.sided', conf.level=0.95, mu=13)$p.value
## [1] 0.009167718
Como el valor-P es 0.009167718 (0.9167718 %) y menor que el nivel de significancia del 5%, se rechaza la hipótesis nula, es decir, las evidencias son suficientes para afirmar que la media de la variable X6 es diferente de 13 cm.
b. Elabore una prueba de hipótesis con α = 0.01 para probar si la media de la variable X15 es mayor de 55 cm.
Al igual que en el ejercicio anterior ahora debemos verificar que la muestra venga de una distribución normal usando el test de normalidad de Anderson-Darling, y observando un histograma de los datos.
ad.test(X15)$p.value
## [1] 0.0007988263
hist(X15,breaks=20)
Ya que el p-value = 0.0007988263 (0.079 %) es menor que el valor de significancia α = 0.01 (1%), se puede asumir que la muestra no proviene de una población normal, sin embargo, es importante decir que al estar trabajando con muestras grandes no es importante que se demuestre normalidad, por lo que lo anterior es algo más de procedimiento.
Por lo dicho anteriormente podemos proceder con la formulación de nuestras hipótesis y cálculo incluso si resulta que no se demuestra normalidad:
\[H_0: \mu \le 55 \quad cm\] \[H_1: \mu > 55 \quad cm\] Después de la formulación de nuestras hipótesis establecemos los valores de las variables para el t.test y tomamos el p-value:
#H0: mu <= 55, H1: mu > 55
t.test(X15, alternative ='greater', conf.level=0.99, mu=55)$p.value
## [1] 0.002708926
Como el valor-P es 0.002708926 (0.2708926 %) y menor que el nivel de significancia del 1%, se rechaza la hipótesis nula, es decir, las evidencias son suficientes para afirmar que la media de la variable X15 es mayor de 55 cm.
c. Elabore una prueba de hipótesis con α = 0.10 para probar si los promedios de la variable X7 en hombres y mujeres son iguales.
En este caso deseamos realizar una prueba de hipótesis para la diferencia de medias, pero primero tendremos que saber si sus varianzas son iguales o distintas, estableciendo un valor de significancia del 10%, donde diremos que:
\[H_0: \sigma_{T1}^2 / \sigma_{T2}^2 = 1\] \[H_1: \sigma_{T1}^2 / \sigma_{T2}^2 \neq 1\]
Primero se debe explorar si las muestras provienen de una población normal y para esto se construyen los QQplot que se muestran a continuación.
q1 <- qqnorm(hombres$X7, plot.it=FALSE)
q2 <- qqnorm(mujeres$X7, plot.it=FALSE)
plot(range(q1$x, q2$x), range(q1$y, q2$y), type="n", las=1,
xlab='Theoretical Quantiles', ylab='Sample Quantiles')
points(q1, pch=19)
points(q2, col="red", pch=19)
qqline(hombres$X7, lty='dashed')
qqline(mujeres$X7, col="red", lty="dashed")
legend('topleft', legend=c('Hombre', 'Mujeres'), bty='n',
col=c('black', 'red'), pch=19)
De la figura anterior se observa que los puntos están bastante alineados lo cual nos lleva a pensar que las muestras si provienen de una población normal, para estar más seguros se aplicará una prueba formal para estudiar la normalidad.
lillie.test(hombres$X7)$p.value
## [1] 0.5546636
lillie.test(mujeres$X7)$p.value
## [1] 0.2074673
Del QQplot mostrado en la anteriormente y las pruebas de normalidad se observa que se puede asumir que las poblaciones son normales, ya que los valores-p se encuentra por encima de un de un valor de 10% de significancia.
stats::var.test(x=hombres$X7, y=mujeres$X7, null.value=1,
alternative="two.sided",
conf.level=0.90)$p.value
## [1] 0.265327
Como el valor-P es 0.0.265327 (26.5327 %), es superior al nivel de significancia 10%, se puede concluir que las varianzas son similares.
Luego podemos resolver nuestra pregunta principal estableciendo las siguientes hipótesis:
\[H_0: \mu_1 - \mu_2 = 0\] \[H_1: \mu_1 - \mu_2 \neq 0\] donde mu1 es la media de los hombres para la variable X7 y mu2 es la media de las mujeres para la variable X7.
Ahora ejecutaos nuestra prueba:
t.test(x=hombres$X7, y=mujeres$X7, alternative="two.sided", mu=0,
paired=FALSE, var.equal=TRUE, conf.level=0.90)$p.value
## [1] 3.529954e-18
De la cual podemos observar que su valor-p es muchísimo menor al valor de significancia del 10%, por lo cual rechazamos la hipótesis nula y podemos decir con toda seguridad que los valores de las medias son distintos como podemos ver en el gráfico de caja a continuación
datos = data.frame(hombres$X7,mujeres$X7)
boxplot(datos, ylab = "Diámetro de muñeca (suma de dos muñecas en cm)" )
Ya que el valor-p no era muchísimo mayor que el valor de significancia cuando realizamos la prueba para verificar si las varianzas eran iguales, decidimos realizar la prueba para cuando las varianzas no son iguales, que igualmente nos confirmó que las medias para la variable X7 en hombres y mujeres no son iguales ya que el valor-p en muchísimo menor que el valor de significancia del 10%.
t.test(x=hombres$X7, y=mujeres$X7, alternative="two.sided", mu=0,
paired=FALSE, var.equal=FALSE, conf.level=0.90)$p.value
## [1] 4.7434e-18
d. Elabore una prueba de hipótesis con α = 0.05 para probar si el promedio de la variable X13 es mayor en hombres que en mujeres.
Para probar si el promedio de la variable X 13 ” Circunferencia abdominal, pasando por el ombligo en cm.”, es mayor en hombres que en mujeres cuando \(\alpha = 0.10\) debemos comprobar que nuestra muestra proviene de una población normal.
## [1] "Aplicamos prueba formal con lillie.test y tenemos para los hombres: 0.683 y para las mujeres: 0.127 Por lo anterior podemos asumir que las poblaciones son normales"
Luego podemos resolver nuestra pregunta principal estableciendo las siguientes hipótesis:
\[H_1: \mu_1 > \mu_2 \] \[H_0: \mu_1 < \mu_2 \] En donde \(\mu_1\) es la media de los hombres para la variable X13 y \(\mu_2\) es la media de en el caso de las mujeres para la variable X13.
solucion2d <- t.test(x=hombres$X13, y=mujeres$X13, alternative = "greater", mu = 0,paired=FALSE, var.equal=TRUE, conf.level=0.90)
solucion2d
##
## Two Sample t-test
##
## data: hombres$X13 and mujeres$X13
## t = 2.7702, df = 98, p-value = 0.003351
## alternative hypothesis: true difference in means is greater than 0
## 90 percent confidence interval:
## 2.710719 Inf
## sample estimates:
## mean of x mean of y
## 87.352 82.278
Podemos evidenciar que \(0.003351< 0.05\) con lo que se rechaza la hipótesis nula y se concluye que hay evidencia suficiente para afirmar que el promedio de la variable X13 es mayor en hombres que en mujeres.
e. ¿Es la varianza de la variable X13 en las mujeres mayor que 80? Pruebe con α = 0.01.
Para probar si la varianza de la variable X13 en las mujeres es mayor que 80, con un nivel de significancia \(\alpha = 0.01\) realizamos una prueba de hipótesis:
\[H_1: \mu > 80 \] \[H_0: \mu \leq 80 \]
var.test(mujeres$X13, y = mujeres$X13, alternative = "greater", conf.level = 0.99)
##
## F test to compare two variances
##
## data: mujeres$X13 and mujeres$X13
## F = 1, num df = 49, denom df = 49, p-value = 0.5
## alternative hypothesis: true ratio of variances is greater than 1
## 99 percent confidence interval:
## 0.5095301 Inf
## sample estimates:
## ratio of variances
## 1
En este caso, la hipótesis nula establece que la varianza de la variable X13 en las mujeres es menor o igual a 80. Dado que el \(valor. p = 0.5)\)es mayor que el nivel de significancia \(\alpha = 0.01\) , no podemos concluir que la varianza de la variable X13 en las mujeres sea mayor que 80.
f. ¿Es la varianza de la variable X8 en los hombres diferente de 1.5? Pruebe con α = 0.01.
Para probar si la varianza de la variable X8 en los hombres es diferente de 1.5, con un nivel de significancia \(\alpha = 0.01\) realizamos una prueba de hipótesis:
\[H_1: \mu \neq 1.5 \] \[H_0: \mu = 1.5 \]
var.test(hombres$X8, y = hombres$X8, alternative = "two.sided", conf.level = 0.99, sigma.squared = 1.5)
##
## F test to compare two variances
##
## data: hombres$X8 and hombres$X8
## F = 1, num df = 49, denom df = 49, p-value = 1
## alternative hypothesis: true ratio of variances is not equal to 1
## 99 percent confidence interval:
## 0.4732502 2.1130471
## sample estimates:
## ratio of variances
## 1
En este caso no hay suficiente evidencia para rechazar la hipótesis nula. Pues, la hipótesis nula establece que la varianza de la variable X8 en los hombres es igual a 1.5. Dado que el valor p = 1 es mayor que el nivel de significancia \(\alpha =0.01\), no podemos concluir que la varianza de la variable X8 en los hombres sea diferente de 1.5
Elabore un breve análisis de regresión lineal para las variables que usted considere que tienen alta correlación.
Lo primero será usar el gráfico pairs que nos permitirá saber cómo se ve la relación entre las distintas variables.
#Observando las relaciones
pairs(muestra1)
Y aunque podemos ver que existen varias relaciones lineales, ahora debemos cuantificar estas relaciones para verificar aquellas con mayor correlación.
# Cuantificando el grado de correlación lineal
correlaciones = data.frame(cor(muestra1)) #cor() cuantifica las relaciones de las variables presentes en el dataframe
knitr::kable(correlaciones, col.names = gsub("[.]", " ", names(correlaciones))) #knitr::kable permite vizualizar mejor la tabla que contiene la cuantificación de las relaciones
| X6 | X7 | X8 | X13 | X15 | X23 | X24 | X25 | |
|---|---|---|---|---|---|---|---|---|
| X6 | 1.0000000 | 0.8437290 | 0.7769035 | 0.4603472 | 0.2505681 | 0.8131104 | 0.7694979 | 0.7779193 |
| X7 | 0.8437290 | 1.0000000 | 0.7505728 | 0.4336881 | 0.2423978 | 0.7874717 | 0.6866494 | 0.7343031 |
| X8 | 0.7769035 | 0.7505728 | 1.0000000 | 0.5009945 | 0.4071744 | 0.7739108 | 0.6662536 | 0.5873057 |
| X13 | 0.4603472 | 0.4336881 | 0.5009945 | 1.0000000 | 0.6021289 | 0.7587396 | 0.4567980 | 0.2694791 |
| X15 | 0.2505681 | 0.2423978 | 0.4071744 | 0.6021289 | 1.0000000 | 0.5729297 | 0.1713365 | -0.0562348 |
| X23 | 0.8131104 | 0.7874717 | 0.7739108 | 0.7587396 | 0.5729297 | 1.0000000 | 0.7526753 | 0.6748252 |
| X24 | 0.7694979 | 0.6866494 | 0.6662536 | 0.4567980 | 0.1713365 | 0.7526753 | 1.0000000 | 0.6700307 |
| X25 | 0.7779193 | 0.7343031 | 0.5873057 | 0.2694791 | -0.0562348 | 0.6748252 | 0.6700307 | 1.0000000 |
es importante saber que como se dice en capítulo 9 de Regresión lineal simple:
A continuación veremos los gráficos de las variables que mayor correlación mostraron, en este caso tomamos aquellas con valor mayores o iguales a 0.8:
library(ggplot2)
ggplot(muestra1, aes(x=X6, y=X7)) +
geom_point() +
geom_smooth(method='lm', formula=y~x, se=FALSE, col='dodgerblue1') +
theme_light()
ggplot(muestra1, aes(x=X6, y=X23)) +
geom_point() +
geom_smooth(method='lm', formula=y~x, se=FALSE, col='dodgerblue1') +
theme_light()
En este caso tomaremos a X6 (Diámetro del codo, suma de dos codos en cm) como la variable independiente, mientras que X7 y X23 serán las dependientes.
Con lo cual procederemos a entrenar modelos de predicción con la función lm la cual es usada para ajustar(entrenar) modelos lineales con unos datos de entrada.
reg.lin1 <- lm(X7 ~ X6, data = muestra1)
reg.lin2 <- lm(X23 ~ X6, data = muestra1)
Lo anterior solo entrena nuestros modelos, pero lo que deseamos es realizar algunas predicciones:
minimo = min(X6)
maximo = max(X6)
nuevos.X6 <- data.frame(NX6 = runif(100,min = minimo,max = maximo)) #Aquí generamos una secuencia de valores nuevos para X6
pred <- predict(reg.lin1)
tabla1 <- data.frame(nuevos.X6,pred)
tabla1
## NX6 pred
## 1 12.66867 11.017143
## 2 10.47121 10.583291
## 3 12.66480 11.389016
## 4 10.15783 11.512974
## 5 10.39227 11.512974
## 6 10.31600 10.645270
## 7 14.59764 11.389016
## 8 15.16545 10.583291
## 9 14.21359 11.389016
## 10 13.44730 11.265059
## 11 11.69195 10.521312
## 12 11.24258 11.698911
## 13 13.93441 12.070784
## 14 13.12838 10.583291
## 15 12.37087 11.079122
## 16 10.31670 11.079122
## 17 13.30153 11.636932
## 18 11.12544 11.698911
## 19 10.69390 10.211418
## 20 11.56902 10.769228
## 21 11.56316 10.955164
## 22 12.65063 10.025481
## 23 10.12647 10.273397
## 24 12.11534 10.459334
## 25 15.19489 11.017143
## 26 10.22119 11.017143
## 27 13.63474 10.831207
## 28 11.67401 11.512974
## 29 12.61231 11.636932
## 30 14.30290 12.008805
## 31 14.16216 11.822868
## 32 14.83913 10.769228
## 33 14.51252 11.884847
## 34 15.92524 11.450995
## 35 15.78863 11.265059
## 36 14.85913 11.884847
## 37 15.77769 12.194742
## 38 11.85792 11.265059
## 39 13.95256 10.459334
## 40 10.85284 10.397355
## 41 11.56022 11.822868
## 42 14.64340 10.397355
## 43 11.90277 11.079122
## 44 14.86078 11.450995
## 45 15.93644 10.955164
## 46 12.38010 11.265059
## 47 11.71468 10.397355
## 48 10.51237 12.194742
## 49 14.42362 11.389016
## 50 12.57108 11.079122
## 51 13.90775 9.715587
## 52 14.66166 10.335376
## 53 11.36098 8.352052
## 54 10.20600 9.219756
## 55 10.82829 10.211418
## 56 14.58468 10.211418
## 57 15.52948 10.149439
## 58 13.50199 10.149439
## 59 12.71341 9.777566
## 60 11.94693 9.839545
## 61 13.61070 9.033820
## 62 13.16127 10.707249
## 63 14.50341 10.769228
## 64 10.94684 9.839545
## 65 12.86004 10.397355
## 66 12.38836 9.777566
## 67 13.99005 9.715587
## 68 15.21972 8.971841
## 69 12.47960 10.397355
## 70 11.62115 9.653608
## 71 11.40242 10.521312
## 72 13.71846 10.149439
## 73 15.27136 10.211418
## 74 12.88056 9.901524
## 75 10.85551 10.149439
## 76 11.48920 10.025481
## 77 11.54364 9.901524
## 78 15.73470 10.521312
## 79 11.64584 9.777566
## 80 11.57039 9.901524
## 81 14.09978 9.901524
## 82 14.11010 9.343714
## 83 16.07695 9.219756
## 84 12.23253 9.653608
## 85 12.04604 9.529651
## 86 12.81223 9.901524
## 87 16.04779 9.591629
## 88 14.17836 9.343714
## 89 13.57765 10.087460
## 90 13.27206 9.095799
## 91 14.57218 10.335376
## 92 10.56329 10.397355
## 93 14.43401 9.157777
## 94 15.27071 9.715587
## 95 13.10800 9.839545
## 96 14.27712 10.397355
## 97 10.40253 10.397355
## 98 14.43634 9.653608
## 99 11.27887 9.033820
## 100 12.44702 9.219756
Lo que vemos anteriormente es cómo generamos unos datos aleatorios de X6 teniendo en cuenta sus datos mínimos y máximo, para luego tomar éstos datos generados y que por medio de la fución predict obtengamos valores de las posibles medidas de X7 para esos valores creados de lo que sería X6.
ggplot(tabla1, aes(x=tabla1$NX6, y=tabla1$pred)) +
geom_point() +
geom_smooth(method='lm', formula=y~x, se=FALSE, col='dodgerblue1') +
theme_light()
Como vemos en la gráfica anterior existe una gran dispersión en los datos y no se ve una clara relación lineal entre las variables, por lo que es posible que el modelo le hagan falta ajustes y demás.
Para profundizar más les recoendamos acceder a : https://www.institutomora.edu.mx/testU/SitePages/martinpaladino/modelos_lineales_con_R.html
Publicado en línea por la universidad de Jaen. Capítulo 9 Regresión lineal simple . http://www4.ujaen.es/~dmontoro/Metodos/Tema%209.pdf
Hernández, F. & Usuga, O. (2023). Manual de R. https://fhernanb.github.io/Manual-de-R/index.html#estructura-del-libro
American Statistical Association. Fuente de datos tomada de https:ww2.amstat.org/publications/jse/v11n2/dataset.heniz.html