#PRIMERO ORGANIZAR LA TABLA EN EXCEL, CAMBIAR LAS COMAS POR PUNTOS, #QUITAR TILDES, SIMPLIFICAR TEXTOS, ETC.y leer la tabla en r
options(repos = c(CRAN = "https://cloud.r-project.org/"))
datos <- read.table("C:/Users/Felipe/Desktop/Felipe/TADD.txt", header = TRUE)
attach(datos)
names(datos)
## [1] "edad" "colesterol" "imc" "tad" "genero"
## [6] "es"
#EL SUMMARY ES UN RESUMEN ESTADISTICO DE TODAS LAS COLUMNAS
summary(datos)
## edad colesterol imc tad
## Min. :42.00 Min. :175.0 Min. :19.10 Min. : 65.00
## 1st Qu.:49.00 1st Qu.:214.2 1st Qu.:22.50 1st Qu.: 71.25
## Median :56.00 Median :230.0 Median :25.52 Median : 80.00
## Mean :55.24 Mean :236.8 Mean :25.70 Mean : 81.37
## 3rd Qu.:60.00 3rd Qu.:254.0 3rd Qu.:27.91 3rd Qu.: 90.00
## Max. :68.00 Max. :315.0 Max. :34.44 Max. :105.00
## genero es
## Length:70 Min. :1.000
## Class :character 1st Qu.:3.000
## Mode :character Median :4.000
## Mean :4.029
## 3rd Qu.:5.000
## Max. :6.000
mean(datos$edad)
## [1] 55.24286
#DESVIACION ESTANDAR:
sd(datos$edad)
## [1] 7.092424
#ANALISIS EDAD.
#La media de la edad es 55,24, es el valor al que tienden las demas edades.
#La desviacion estandar es 7, no es un valor alto para el contexto, por lo tanto indica que las edades tienden a estar cerca a la media.
#Asi mismo con las demas variables cuantitavas.
#ANALISIS VARIABLES CUALITATIVAS:
#La media es el estrato 4, y la moda tambien, es el estrato al cual tienden los datos.
#Para la moda de el genero usamos la siguiente funcion:
moda <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]}
moda_genero <- moda(datos$genero)
#Y la moda es Masculino.
#GRAFICOS UNIVARIADOS:(HISTOGRAMAS)Útiles para ver la distribución de variables
#continuas como edad, colesterol, imc, etc.
hist(datos$edad, main = "Distribución de la Edad", xlab = "Edad")
#Con el anterior histograma se puede apreciar y confirmar lo anterior dicho que la media es 55, tambien se puede ver que la barra con mas frecuencia es de 55 a 60, y justamente la moda de la edad es 58.
#Asi mismo para las demas variables numericas se puede apreciar su respectivo histograma
hist(datos$colesterol, main = "Distribución del Colesterol", xlab = "Colesterol")
#BOXPLOTS:Para detectar outliers y ver la dispersión de los datos.
boxplot(datos$edad,main = "Boxplot de la edad", ylab = "EDAD")
#Para este boxplot podemos ver que aprox el 25% de las edades estan por debajo de 50, y otro 25% esta por encima de 60.
#Ademas la linea adentro de la caja nos indica la mediana, que es 56.
#Vemos la la linea de la mediana no esta centrada en la caja, por tanto la distribucion es asimentrica.
#En cuanto a los bigotes vemos que no hay puntos que aparecen fuera de los bigotes, por tanto no hay datos que sten fuera del rango esperado.
#para las demas variables numericas el analisis es analogo
# Convertir la columna IMC a numérica si es necesario
datos$imc <- as.numeric(gsub(",", ".", datos$imc))
boxplot(datos$imc, main = "Boxplot del IMC", ylab = "IMC")
#Gráficos de barras: Para variables categóricas como género o el estrato:
barplot(table(datos$genero), main = "Distribución de Género")
#Con ese diagrama se aprecia como se afirmo anteriormente, que la moda es el Masculino.
barplot(table(datos$es), main = "Distribución de estratos")
#Con ese diagrama se aprecia que la moda de estratos es 4 y asi mismo menos de 3 personas son de estrato 1.
#DESCRIPCION MULTIVARIADA:
#Correlación: Para ver la relación entre variables continuas como colesterol,
#IMC, edad, etc.
#VEREMOS EL COEIFICIENTE DE PERSON que va de -1 a 1
modelo <- lm(edad~tad)
summary(modelo)
##
## Call:
## lm(formula = edad ~ tad)
##
## Residuals:
## Min 1Q Median 3Q Max
## -16.9509 -5.6161 -0.4175 4.9428 15.4551
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 35.93659 5.72500 6.277 2.77e-08 ***
## tad 0.23726 0.06968 3.405 0.00111 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.604 on 68 degrees of freedom
## Multiple R-squared: 0.1456, Adjusted R-squared: 0.1331
## F-statistic: 11.59 on 1 and 68 DF, p-value: 0.001115
sqrt(0.1331)
## [1] 0.3648287
#El coeficiente de Pearson es de 0,3648, sugiere que hay una tendencia a que las personas mayores tengan un TAD más alto en comparación con las más jóvenes, pero no es una relación perfecta.
#Asi mismo se puede analizar el coefiente de pearson para las demas variables
#AHORA HAREMOS EL GRAFICO CON LA LINEA DE TENDENCIA
plot(datos$edad, datos$tad,
main = "Relación entre Edad y tad",
xlab = "Edad",
ylab = "tad")
abline(lm(tad~edad, datos = datos))
## Warning: In lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
## extra argument 'datos' will be disregarded
#Con el grafico de regresion se aprecia que la linea tiene pendiente positiva, por tanto se puede confirmar la afirmacion anterior acerca de la interpretacion de Pearson.
#Ahora veremos la relacion entre la edad y el imc.Otra forma mas sencilla es la siguiente:
correlacion_pearson <- cor(datos$edad, datos$imc, use = "complete.obs")
#Vemos que es 0,243, este valor sugiere una correlacion positiva entre las variables. Esto significa que, en general, a medida que la edad aumenta, también tiende a aumentar el IMC, aunque de manera débil ya que no es una valor muy alto.
#Haremos un grafico de dispersion entre la edad y el imc
# Gráfico de dispersión entre IMC y Edad
plot(datos$edad, datos$imc, main = "Edad vs IMC", xlab = "Edad", ylab = "IMC")
#Asi mismo podemos ver el coeficiente de pearson para las demas variables cuantitativas, y recordar que Los valores del coeficiente de Pearson van de -1 (correlación negativa perfecta) a 1 (correlación positiva perfecta). Un valor de 0 indica que no hay correlación.
#Para analizar la relación entre variables categóricas, como el genero y el estrato, el coeficiente de correlación de Pearson no es adecuado. Entonces podemos usar una tabla de contingencia.
#PARA LA TABLA DE CONTINGENCIA: Es para variables categoricas, en este caso la haremos entre estrato y genero.
tabla_cruzada <- table(datos$genero, datos$es)
print(tabla_cruzada)
##
## 1 2 3 4 5 6
## f 1 5 4 12 9 2
## m 0 3 10 8 10 6
#Con esta tabla cruzada se puede apreciar de mejor manera cuantas personas de cada genero pertenecen a cada estrato.
#Tambien podemos usar Chi-cuadrado de independencia:
chi_cuadrado <- chisq.test(tabla_cruzada)
## Warning in chisq.test(tabla_cruzada): Chi-squared approximation may be
## incorrect
print(chi_cuadrado)
##
## Pearson's Chi-squared test
##
## data: tabla_cruzada
## X-squared = 6.7174, df = 5, p-value = 0.2425
#Vemos que el valor de p es 0,242, que es mayor que el umbral común de 0.05, por tanto No hay suficiente evidencia para rechazar la hipótesis nula. Esto significa que no se puede concluir que exista una relación estadísticamente significativa entre las variables género y estrato.
#Basicamente las variables genero y estrato parecen ser independientes.
install.packages("ggplot2")
## Installing package into 'C:/Users/Felipe/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'ggplot2' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\Felipe\AppData\Local\Temp\RtmpquzbQ2\downloaded_packages
#AHORA PARA SELCCIONAR ALEATORIAMENTE LOS 30 DATOS: Se puede instalar el paquete ggplot2 en r para que seleccione aleatoriamente los 30 datos.
muestra <- datos[sample(nrow(datos), 30), ]
install.packages("rmarkdown")
## Installing package into 'C:/Users/Felipe/AppData/Local/R/win-library/4.3'
## (as 'lib' is unspecified)
## package 'rmarkdown' successfully unpacked and MD5 sums checked
##
## The downloaded binary packages are in
## C:\Users\Felipe\AppData\Local\Temp\RtmpquzbQ2\downloaded_packages
summary(muestra)
## edad colesterol imc tad
## Min. :43.00 Min. :175.0 Min. :19.53 Min. :65.00
## 1st Qu.:48.25 1st Qu.:208.2 1st Qu.:22.87 1st Qu.:75.00
## Median :53.00 Median :230.0 Median :25.83 Median :80.00
## Mean :54.23 Mean :234.4 Mean :26.02 Mean :80.07
## 3rd Qu.:59.75 3rd Qu.:253.8 3rd Qu.:27.61 3rd Qu.:88.75
## Max. :67.00 Max. :310.0 Max. :33.91 Max. :95.00
## genero es
## Length:30 Min. :2.000
## Class :character 1st Qu.:3.000
## Mode :character Median :4.000
## Mean :4.167
## 3rd Qu.:5.000
## Max. :6.000
#Al ver las medias de las variables tomando como datos la muestra, vemos que todas las medias se mantienen casi en los mismos valores, sin embargo en la media del tad si se ve un gran cambio.
moda <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]}
moda_genero <- moda(muestra$genero)
#En la moda del genero vemos que se sigue manteniendo que la moda es el masculino
hist(muestra$edad, main = "Distribución de la Edad", xlab = "Edad")
#Con el histograma de la edad vemos que la moda sigue en el intervalo (55,60) y las demas edades tienen la misma tendencia.
hist(muestra$colesterol, main = "Distribución del Colesterol", xlab = "Colesterol")
#Para el histograma del colesterol vemos que la muestra mantiene la misma tendecia.
hist(muestra$tad, main = "Distribución de la TAD", xlab = "TAD")
#En la variable tad si se puede apreciar que hay mayor agrupacion desde 65 hasta 75.
boxplot(muestra$edad,main = "Boxplot de la edad", ylab = "EDAD")
#El boxplot de la edad sigue la misma tendencia a los datos de la poblacion
boxplot(muestra$tad,main = "Boxplot de la TAD", ylab = "TAD")
#En este boxplot del tad tambien se puede apreciar la misma tendencia que con los datos originales con ligeros cambios.
boxplot(muestra$imc, main = "Boxplot del IMC", ylab = "IMC")
#En este boxplot del imc tambien se puede apreciar la misma tendencia que con los datos originales.
barplot(table(muestra$genero), main = "Distribución de Género")
#Como lo dijimos anteriormente, la moda del genero sigue siendo la misma.
barplot(table(muestra$es), main = "Distribución de estratos")
#Con el anterior grafico si podemos ver mas cambios, el estrato 1 no fue selecionado en la muestra, ademas el estrato 4 bastantes fueron elegidos en comparacion a los demas estratos.
coef_pearson <- cor(muestra$edad, muestra$imc, use = "complete.obs")
#Vemos que el valor es el mismo a los datos originales
plot(muestra$edad, muestra$imc, main = "Edad vs IMC", xlab = "Edad", ylab = "IMC")
#Asi mismo el grafico de dispersion es bastante similar al de los de datos originales.
tabla_cruzada <- table(muestra$genero, muestra$es)
print(tabla_cruzada)
##
## 2 3 4 5 6
## f 1 2 4 5 1
## m 1 5 4 5 2
chi_cuadrado <- chisq.test(tabla_cruzada)
## Warning in chisq.test(tabla_cruzada): Chi-squared approximation may be
## incorrect
print(chi_cuadrado)
##
## Pearson's Chi-squared test
##
## data: tabla_cruzada
## X-squared = 1.1054, df = 4, p-value = 0.8934
#En este caso el valor de p tambien es mayor que 0,05, or tanto No hay suficiente evidencia para rechazar la hipótesis nula. Esto significa que no se puede concluir que exista una relación estadísticamente significativa entre las variables género y estrato.
#Basicamente las variables genero y estrato parecen ser independientes.
#Segun todas las medidas anteriormente calculadas podemos concluir que la muestra es representativa de la poblacion.