IMPORTACION DE LIBRERIAS
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.2
library(gridExtra)
library(readxl)
BASEORIDINAL <- read_excel("C:/Users/Johana/Downloads/BASEORIDINAL.xlsx")
View(BASEORIDINAL)
INTRODUCION
La base de datos SRVEY LUNG CANCER o Cáncer de pulmón es una enfermedad caracterizada por el crecimiento descontrolado de células anormales en los pulmones. Este tipo de cáncer se ha convertido en una de las principales causas de morbilidad y mortalidad en todo el mundo. A menudo, se asocia estrechamente con el hábito de fumar, aunque también puede afectar a personas que nunca han fumado.
El cáncer de pulmón se origina en los pulmones, los órganos esenciales para la respiración. Estos órganos están formados por una red compleja de bronquios y alvéolos, donde tiene lugar el intercambio de oxígeno y dióxido de carbono. Cuando las células pulmonares comienzan a crecer sin control, pueden formar masas o tumores que interfieren con la función pulmonar normal.
La calidad de los datos es un elemento crítico en la efectividad de los modelos de aprendizaje automático. En este sentido, se prestará especial atención a la selección y preparación de conjuntos de datos representativos, considerando variables relevantes como la historia clínica, factores genéticos, y hábitos de vida. Además, se implementarán técnicas de validación cruzada y otras estrategias de evaluación para garantizar la fiabilidad y generalización de los modelos desarrollados.
La base de datos parece contener información sobre la salud y los hábitos de vida de varios individuos, con un enfoque particular en factores relacionados con el cáncer de pulmón. Incluye datos demográficos como género y edad, así como información sobre el consumo de tabaco, presión arterial, horas de sueño, índice de masa corporal y otros síntomas o condiciones relacionados con la salud pulmonar. La presencia de la columna “LUNG_CANCER” indica si el individuo tiene o no cáncer de pulmón, lo que puede ser crucial para análisis epidemiológicos y estudios de salud
OBS: Número de observación o identificación única para cada individuo. Tipo: Nominal (identificador).
2.AGE: Edad del individuo. Tipo: Numérico (continuo).
SMOKING: Indica si el individuo fuma o no (NO para no, YES para sí). Tipo: Nominal (categórico).
YELLOW_FINGERS: Presencia de dedos amarillos debido al tabaquismo (NO para no, YES para sí). Tipo: Nominal (categórico).
ANXIETY: Indica si el individuo experimenta ansiedad (NO para no, YES para sí). Tipo: Nominal (categórico).
PEER_PRESSURE: Si el individuo siente presión de grupo para fumar (NO para no, YES para sí). Tipo: Nominal (categórico).
FATIGUE: Indica si el individuo experimenta fatiga (NO para no, YES para sí). Tipo: Nominal (categórico).
ALLERGY: Presencia de alergias en el individuo (NO para no, YES para sí). Tipo: Nominal (categórico).
WHEEZING: Presencia de sibilancias al respirar (NO para no, YES para sí). Tipo: Nominal (categórico).
ALCOHOL_CONSUMING: Consumo de alcohol por parte del individuo (NO para no, YES para sí). Tipo: Nominal (categórico).
BLOOD_PRESSURE: Nivel de presión arterial del individuo. Tipo: Numérico (continuo).
SLEEP_HOURS: Horas de sueño del individuo. Tipo: Numérico (continuo).
BODY_MASS: Índice de masa corporal (BMI) del individuo. Tipo: Numérico (continuo).
DEGREE_OF_DIFFICULTY_BREATHING: Grado de dificultad al respirar (HALF para moderado, HIGH para alto, LOW para bajo). Tipo: Ordinal (categórico con orden).
DEGREE_OF_DIFFICULTY_EATING: Grado de dificultad al comer (HALF para moderado, HIGH para alto, LOW para bajo). Tipo: Ordinal (categórico con orden).
CHEST_PAIN: Presencia de dolor en el pecho (1 para sí, 2 para no). Tipo: Nominal (categórico).
LUNG_CANCER: Indica si el individuo tiene cáncer de pulmón (YES para sí, NO para no). Tipo: Nominal (categórico).
CODIGO
if (!requireNamespace("dplyr", quietly = TRUE)) {
install.packages("dplyr")
}
library(dplyr)
##
## Attaching package: 'dplyr'
## The following object is masked from 'package:gridExtra':
##
## combine
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
data <- BASEORIDINAL
data <- data %>%
mutate(across(where(is.character), as.factor))
str(data)
## tibble [309 × 17] (S3: tbl_df/tbl/data.frame)
## $ GENDER : Factor w/ 2 levels "F","M": 2 1 2 1 2 1 1 1 2 2 ...
## $ AGE : num [1:309] 69 59 63 63 52 51 68 60 58 69 ...
## $ SMOKING : Factor w/ 2 levels "NO","YES": 1 2 2 1 2 2 2 2 2 2 ...
## $ YELLOW_FINGERS : Factor w/ 2 levels "NO","YES": 2 1 2 2 1 2 1 1 1 1 ...
## $ ANXIETY : Factor w/ 2 levels "NO","YES": 2 1 1 1 1 2 2 1 1 1 ...
## $ PEER_PRESSURE : Factor w/ 2 levels "NO","YES": 1 2 2 1 1 2 2 1 2 1 ...
## $ FATIGUE : Factor w/ 2 levels "NO","YES": 2 2 1 1 2 2 2 2 2 1 ...
## $ ALLERGY : Factor w/ 2 levels "NO","YES": 1 1 1 1 1 2 1 1 2 2 ...
## $ WHEEZING : Factor w/ 2 levels "NO","YES": 2 2 1 2 2 1 1 1 2 2 ...
## $ ALCOHOL CONSUMING : Factor w/ 2 levels "NO","YES": 2 1 2 1 2 1 1 1 2 2 ...
## $ BLOOD PRESSURE : num [1:309] 124 90 115 112 115 94 111 130 125 105 ...
## $ SLEEP HOURS : num [1:309] 3 3 5 4 3 4 5 5 4 4 ...
## $ BMI : num [1:309] 1 29.8 16.7 29.4 18.8 ...
## $ DEGREE OF DIFFICULTY BREATHING: Factor w/ 3 levels "HALF","HIGH",..: 2 2 1 3 2 2 1 1 1 1 ...
## $ DEGREE OF DIFFICULTY EATING : Factor w/ 2 levels "HIGH","LOW": 2 1 2 1 1 1 1 1 2 2 ...
## $ CHEST PAIN : num [1:309] 2 2 2 1 2 1 1 1 2 2 ...
## $ LUNG_CANCER : Factor w/ 2 levels "NO","YES": 2 1 1 1 2 2 1 1 2 1 ...
data
VERIFICACION DE NA
BASE_na <- is.na(BASEORIDINAL)
head(BASE_na)
GENDER AGE SMOKING YELLOW_FINGERS ANXIETY PEER_PRESSURE FATIGUE ALLERGY
[1,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[2,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[3,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[4,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[5,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[6,] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
WHEEZING ALCOHOL CONSUMING BLOOD PRESSURE SLEEP HOURS BMI
[1,] FALSE FALSE FALSE FALSE FALSE
[2,] FALSE FALSE FALSE FALSE FALSE
[3,] FALSE FALSE FALSE FALSE FALSE
[4,] FALSE FALSE FALSE FALSE FALSE
[5,] FALSE FALSE FALSE FALSE FALSE
[6,] FALSE FALSE FALSE FALSE FALSE
DEGREE OF DIFFICULTY BREATHING DEGREE OF DIFFICULTY EATING CHEST PAIN
[1,] FALSE FALSE FALSE
[2,] FALSE FALSE FALSE
[3,] FALSE FALSE FALSE
[4,] FALSE FALSE FALSE
[5,] FALSE FALSE FALSE
[6,] FALSE FALSE FALSE
LUNG_CANCER
[1,] FALSE
[2,] FALSE
[3,] FALSE
[4,] FALSE
[5,] FALSE
[6,] FALSE
INTERPRETACION Se observa en la base de datos no existe datos NA.
classes <- sapply(BASEORIDINAL, class)
for (variable in names(classes)) {
cat("Variable:", variable, " - Clase:", classes[variable], "\n")
classes
}
Variable: GENDER - Clase: character
Variable: AGE - Clase: numeric
Variable: SMOKING - Clase: character
Variable: YELLOW_FINGERS - Clase: character
Variable: ANXIETY - Clase: character
Variable: PEER_PRESSURE - Clase: character
Variable: FATIGUE - Clase: character
Variable: ALLERGY - Clase: character
Variable: WHEEZING - Clase: character
Variable: ALCOHOL CONSUMING - Clase: character
Variable: BLOOD PRESSURE - Clase: numeric
Variable: SLEEP HOURS - Clase: numeric
Variable: BMI - Clase: numeric
Variable: DEGREE OF DIFFICULTY BREATHING - Clase: character
Variable: DEGREE OF DIFFICULTY EATING - Clase: character
Variable: CHEST PAIN - Clase: numeric
Variable: LUNG_CANCER - Clase: character
ANALISIS DESCRIPTIVO
MINIMO VALOR En un conjunto de datos es el número más pequeño o la observación más baja dentro de ese conjunto. Es uno de los resúmenes descriptivos básicos que ayuda a entender la gama o dispersión de los datos.
1st QU El primer quintil, también conocido como el quintil inferior o percentil 25, es el valor que separa el 20% inferior de un conjunto de datos ordenado de manera ascendente. En otras palabras, el primer quintil es el valor por debajo del cual cae el 25% de los datos. FORMULA \[Q1 = \frac{n+1}{4}\] MEDIANA
La mediana es una medida de tendencia central en estadísticas que se utiliza para representar el valor central de un conjunto de datos. Para calcular la mediana, primero debes ordenar los datos de menor a mayor (o viceversa) y luego encontrar el valor que se encuentra exactamente en el centro de la distribución. FORMULA
NUMERO IMPAR DE DATOS \[M = Valor de la posicion (\frac{n+1}{2})\] NUMERO PAR DE DATOS \[M = Suma de los valores en las posiciones (\frac{n}{2})\] MEDIA Es una medida que representa el valor típico o promedio de un conjunto de datos. Se calcula sumando todos los valores en el conjunto y dividiendo esa suma por el número total de elementos en el conjunto. FORMULA \[\bar{x} = \frac{\sum_{i=1_{}}^{N}xi}{N}\] 3RD QU Sefiere al valor que divide los tres cuartos superiores de un conjunto de datos ordenado. En términos más específicos, el tercer cuartil representa el valor por debajo del cual se encuentra el 75% de los datos. \[Q1 = 3\frac{n+1}{5}\] Para calcular el tercer cuartil, primero debes ordenar el conjunto de datos de menor a mayor. Luego, divides los datos en cuatro partes iguales, y el tercer cuartil es el valor que se encuentra en el límite entre el tercer y el cuarto cuartil. Matemáticamente, se suele denotar como Q3Q3.
MAXIMO
En un conjunto de datos se refiere al valor más grande o a la observación más alta dentro de ese conjunto.Calcular el valor máximo es útil para entender la variabilidad en un conjunto de datos y proporciona información sobre la parte superior de la distribución. Similar al valor mínimo, el valor máximo puede ser sensible a valores atípicos o extremos, ya que un solo valor extremadamente alto puede afectar significativamente el valor máximo.
CONVERSION A INTEGER
summary(BASEORIDINAL[,classes=="numeric"])
AGE BLOOD PRESSURE SLEEP HOURS BMI
Min. :21.00 Min. : 0.0 Min. :1.000 Min. : 1.00
1st Qu.:57.00 1st Qu.:110.0 1st Qu.:2.000 1st Qu.:17.47
Median :62.00 Median :119.0 Median :3.000 Median :25.73
Mean :62.67 Mean :121.6 Mean :3.311 Mean :21.51
3rd Qu.:69.00 3rd Qu.:133.0 3rd Qu.:4.000 3rd Qu.:29.77
Max. :87.00 Max. :200.0 Max. :5.000 Max. :46.01
CHEST PAIN
Min. :1.000
1st Qu.:1.000
Median :2.000
Mean :1.557
3rd Qu.:2.000
Max. :2.000
apply(BASEORIDINAL[,classes=="numeric"],2,sd)
AGE BLOOD PRESSURE SLEEP HOURS BMI CHEST PAIN
8.210301 20.783988 1.214328 12.666519 0.497588
INTERPRETACION AGE:
Min: La edad mínima en tu conjunto de datos es 21 años.
1st Qu (primer cuartil): El 25% de las personas tienen una edad de 57 años o menos.
Median (mediana): La mediana (valor central) de la edad es 62 años.
Mean (media): La media (promedio) de las edades es aproximadamente 62.67 años.
3rd Qu (tercer cuartil): El 75% de las personas tienen una edad de 69 años o menos.
Max: La edad máxima en tu conjunto de datos es 87 años.
BLOOD PRESSURE:
Min: La presión arterial mínima es 0.0.
1st Qu: El 25% de las personas tienen una presión arterial de 110.0 o menos.
Median: La mediana de la presión arterial es 119.0.
Mean: La media de la presión arterial es aproximadamente 121.6.
3rd Qu: El 75% de las personas tienen una presión arterial de 133.0 o menos.
Max: La presión arterial máxima en tu conjunto de datos es 200.0.
SLEEP HOURS:
Min: La cantidad mínima de horas de sueño es 1.
1st Qu: El 25% de las personas duermen 2 horas o menos.
Median: La mediana de las horas de sueño es 3.
Mean: La media de las horas de sueño es aproximadamente 3.311.
3rd Qu: El 75% de las personas duermen 4 horas o menos.
Max: La cantidad máxima de horas de sueño es 5.
BMI (Body Mass Index):
Min: El índice de masa corporal (BMI) mínimo es 1.0.
1st Qu: El 25% de las personas tienen un BMI de 17.47 o menos.
Median: La mediana del BMI es 25.73.
Mean: La media del BMI es aproximadamente 21.51.
3rd Qu: El 75% de las personas tienen un BMI de 29.77 o menos.
Max: El BMI máximo en tu conjunto de datos es 46.01.
CHEST PAIN:
Min: La intensidad mínima del dolor en el pecho es 1.0.
1st Qu: El 25% de las personas tienen una intensidad de dolor en el pecho de 1.0 o menos.
Median: La mediana de la intensidad del dolor en el pecho es 2.0.
Mean: La media de la intensidad del dolor en el pecho es aproximadamente 1.557.
3rd Qu: El 75% de las personas tienen una intensidad de dolor en el pecho de 2.0 o menos.
Max: La intensidad máxima del dolor en el pecho es 2.0
DIAGRAMA DE BARRAS
VARIABLE GENERO
ggplot(BASEORIDINAL, aes(x = GENDER)) +
geom_bar(fill = "skyblue") +
labs(x = "Gender", title = "VARIABLE GENERO") +
theme_minimal()
VARIABLE EDAD
ggplot(BASEORIDINAL, aes(x = AGE)) +
geom_bar(fill = "skyblue") +
labs(x = "Gender", title = "VARIABLE EDAD") +
theme_minimal()
VARIABLE SMOKING
ggplot(BASEORIDINAL, aes(x = SMOKING)) +
geom_bar(fill = "skyblue") +
labs(x = "Gender", title = "VARIABLE SMOKING") +
theme_minimal()
VARIABLE ANSIEDAD
ggplot(BASEORIDINAL, aes(x = ANXIETY)) +
geom_bar(fill = "skyblue") +
labs(x = "Gender", title = "VARIABLE ANSIEDAD") +
theme_minimal()
DIFICULTAD PARA TOCER
ggplot(BASEORIDINAL, aes(x = BASEORIDINAL$`DEGREE OF DIFFICULTY BREATHING`)) +
geom_bar(fill = "skyblue") +
labs(x = "Gender", title = "DIFICULTAD PARA TOCER") +
theme_minimal()
## Warning: Use of `` BASEORIDINAL$`DEGREE OF DIFFICULTY BREATHING` `` is discouraged.
## ℹ Use `DEGREE OF DIFFICULTY BREATHING` instead.
DIFICULTAD PARA COMER
ggplot(BASEORIDINAL, aes(x = `DEGREE OF DIFFICULTY EATING`)) +
geom_bar(fill = "skyblue") +
labs(x = "Gender", title = "DIFICULTAD PARA COMER") +
theme_minimal()
VARIABLE PRESION ARTERIAL
ggplot(BASEORIDINAL, aes(x = `BLOOD PRESSURE`)) +
geom_bar(fill = "skyblue") +
labs(x = "Gender", title = "VARIABLE PRESION ARTERIAL") +
theme_minimal()
VARIABLE
ggplot(BASEORIDINAL, aes(x = `SLEEP HOURS`)) +
geom_bar(fill = "skyblue") +
labs(x = "Gender", title = "VARIABLE HORAS DE SUEÑO") +
theme_minimal()
DIAGRAMAS DE DISPERSION
##DIAGRAMA DE DISPERSION (RELACION ENTRE Edad y SMOKING)
qplot(AGE,SMOKING, data = BASEORIDINAL, colour = LUNG_CANCER)
Warning: `qplot()` was deprecated in ggplot2 3.4.0.
This warning is displayed once every 8 hours.
Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
generated.
INTERPRETACION Se observa que SI existe tendencia a contraer cancer de pulmon,las personas mayores a las 43 años si fuman y les hace mas propensos a contraer cancer de pulmon
##DIAGRAMA DE DISPERSION (EDAD y HORAS DE SUEÑO)
qplot(AGE,`SLEEP HOURS`, data = BASEORIDINAL, colour = LUNG_CANCER)
INTERPRETACION Se observa que SI existe tendencia a contraer cancer de pulmon,las personas mayores a las 43 años duermen mas de 2 horas al dia y tiene una tendencia a contraer cancer de pulmon.
##DIAGRAMA DE DISPERSION (ALERGIA Y ANSIEDAD)
qplot(ALLERGY, ANXIETY, data = BASEORIDINAL, colour = LUNG_CANCER)
INTERPRETACION Se observa que SI existe tendencia a contraer cancer de
pulmon, las personas presentan alergias y ansiedad en su totalidad y les
hace propensos acontraer cancer de pulmon.
##DIAGRAMA DE DISPERSION (EDAD y HORAS DE SUEÑO)
qplot(`ALCOHOL CONSUMING`,`DEGREE OF DIFFICULTY BREATHING`, data = BASEORIDINAL, colour = LUNG_CANCER)
$ INTERPRETACION Se observa que SI existe tendencia a contraer cancer de
pulmon,las personas si consumen alcohol y tiene un grado dificultad bajo
y medio de tocer.
BOXPLOT
CancerP <- BASEORIDINAL$LUNG_CANCER
PRESSURE <- BASEORIDINAL$`BLOOD PRESSURE`
P1 <- ggplot(BASEORIDINAL, aes(x=LUNG_CANCER,
y=PRESSURE, color=LUNG_CANCER))+
geom_boxplot()
P1
INTERPRETACION El eje x representa los niveles de la CANCER DE PULMON El eje y representa los valores de la PRESION ARTERIAL variable. Boxplots se utilizan para mostrar la distribución de la BLOOD PRESSURE valores para cada nivel La caja de la parcela representa la gama intercuartátil (IQR) de la valores para cada grupo, con una línea dentro de la caja que representa la mediana.Los batinadores se extienden desde la caja para mostrar el rango de los datos, y los puntos más allá de los bigotes pueden ser considerados como atístes. No se presenta MAYOR variabilidad en los datos.
CancerP <- BASEORIDINAL$LUNG_CANCER
SUEÑO <- BASEORIDINAL$`SLEEP HOURS`
P1 <- ggplot(BASEORIDINAL, aes(x=LUNG_CANCER,
y=SUEÑO, color=LUNG_CANCER))+
geom_boxplot()
P1
INTERPRETACION Las medianas y los cuartiles (Q1 y Q3) son diferentes
entre los dos conjuntos de datos.La longitud de las cajas y los bigotes
es significativamente diferente, indicando una dispersión diferente de
los datos. La posición relativa de las medianas en las cajas es
diferente, lo que sugiere diferencias en la tendencia central de los dos
conjuntos de datos.Puntos fuera de los bigotes (valores atípicos) pueden
ser más prominentes en uno de los grupos, indicando diferencias en la
cola de la distribución.La forma general de la distribución, como la
simetría o asimetría, puede ser diferente.La variabilidad en términos de
dispersión y rango intercuartílico puede ser claramente distinta.
CancerP <- BASEORIDINAL$LUNG_CANCER
MASACOR <- BASEORIDINAL$BMI
P1 <- ggplot(BASEORIDINAL, aes(x=LUNG_CANCER,
y=MASACOR, color=LUNG_CANCER))+
geom_boxplot()
P1
Los los boxplot La mediana y los cuartiles (Q2 y Q3) son iguales o muy
cercanos entre los dos conjuntos de datos. La longitud de las cajas y
los bigotes es comparable, indicando una dispersión entre de los
datos.La posición relativa de las medianas en las cajas es similar, lo
que significa que la tendencia central de los dos conjuntos de datos es
comparable. La variabilidad en ambos conjuntos de datos es parecida, ya
que la longitud de las cajas y los bigotes es similar.No hay heno
Evidencia de Diferencias Significativas
RELACION ENTRE LA VARIABLE BINARTIA Y LAS VARIABLES NOMINALES
library(htmltools)
Warning: package 'htmltools' was built under R version 4.3.2
library(ggmosaic)
Warning: package 'ggmosaic' was built under R version 4.3.2
q1 <- ggplot(data = BASEORIDINAL)+geom_mosaic(aes(x = product(LUNG_CANCER,GENDER),fill = LUNG_CANCER))+ labs(x="Gender", title = "factores Cancer Pulmon")
q1
Warning: `unite_()` was deprecated in tidyr 1.2.0.
ℹ Please use `unite()` instead.
ℹ The deprecated feature was likely used in the ggmosaic package.
Please report the issue at <https://github.com/haleyjeppson/ggmosaic>.
This warning is displayed once every 8 hours.
Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
generated.
q2 <- ggplot(data = BASEORIDINAL)+geom_mosaic(aes(x = product(LUNG_CANCER,SMOKING),fill = LUNG_CANCER))+ labs(x="Smoking", title = "factores Cancer Pulmon")
q2
q3 <- ggplot(data = BASEORIDINAL)+geom_mosaic(aes(x = product(LUNG_CANCER,YELLOW_FINGERS),fill = LUNG_CANCER))+ labs(x="YELLOW_FINGERS", title = "factores Cancer Pulmon")
q3
q4 <- ggplot(data = BASEORIDINAL)+geom_mosaic(aes(x = product(LUNG_CANCER,ANXIETY),fill = LUNG_CANCER))+ labs(x="ANXIETY", title = "factores Cancer Pulmon")
q4
q5 <- ggplot(data = BASEORIDINAL)+geom_mosaic(aes(x = product(LUNG_CANCER,PEER_PRESSURE),fill = LUNG_CANCER))+ labs(x="PEER_PRESSURE", title = "factores Cancer Pulmon")
q5
q6 <- ggplot(data = BASEORIDINAL)+geom_mosaic(aes(x = product(LUNG_CANCER,FATIGUE),fill = LUNG_CANCER))+ labs(x="FATIGUE", title = "factores Cancer Pulmon")
q6
q7 <- ggplot(data = BASEORIDINAL)+geom_mosaic(aes(x = product(LUNG_CANCER,ALLERGY),fill = LUNG_CANCER))+ labs(x="ALLERGY", title = "factores Cancer Pulmon")
q7
q8 <- ggplot(data = BASEORIDINAL)+geom_mosaic(aes(x = product(LUNG_CANCER,WHEEZING),fill = LUNG_CANCER))+ labs(x="WHEEZING", title = "factores Cancer Pulmon")
q8
grid.arrange(q1,q2,q3,q4,q5,q6,q7,q8,nrow = 4, ncol =4)
INTERPRETACION Se observa en todos los graficos de las variables
nominales que si existe presencia de cNancer de pulmon en las factores
todos los factores si influyen a contrater cancer de pulmon, en su
mayoria las variables influyen a contraer cancer de pulmon.
GRAFICO MULTIVARIANTE
library(GGally)
Warning: package 'GGally' was built under R version 4.3.2
Registered S3 method overwritten by 'GGally':
method from
+.gg ggplot2
Attaching package: 'GGally'
The following object is masked from 'package:ggmosaic':
happy
ggpairs(BASEORIDINAL[,classes=="numeric"]) + theme_bw()
INTERPRETACION Se observa existe una correlacion moderada entre las
horas de sueño y masa corporal, existe una correlacion baja negativa
entre la masa corporal y la edad.
library(ggmosaic)
p <- ggpairs(BASEORIDINAL[,c(which(classes=="numeric"),17)], aes(color = BASEORIDINAL$LUNG_CANCER)) + theme_bw()
for (i in 1:p$nrow) {
for (j in 1:p$ncol) {
p[i,j] <- p[i,j] +
scale_fill_manual(values = c("#000AEB","#E7B800")) +
scale_color_manual(values = c("#000AEB","#E7B800"))
}
}
p
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
INTERPRETACION
En el grafico observamos boxplot de las cuatro variables numericas , el diagra,a de cajas la relacion y correlacion entre las variables numericas, ademas observamos que las tres variables influyen en en indice de masa corporal, estas influyen directamente y se ve el nivel de correlacion.
Dividiremos el conjunto completo de individuos en dos partes . un apara entrenar el modelo, que contiene el 80% de los individuos y otra para validarlo que contiene el resto. E sto es que usamos para ajustarlo, la bondad del ajuste quedara sobrevalorada. Antes de ajustar cualquier modelo, es conveniente escalar las variables numericas y tenemos que reacondicionar las variables categoricas convirtiendolas en variables ficticias y usando la primera o la ultima categorica como comparacion.
Una variable ficticia es va a tomar valores de cero o de uno para representar cATEGORIAS O REPRESENTA UNA CONDICIION, SE UTILIZA EN ANALISI DE REGRESION para incomporar informacion cualitativa en terminos cuantitativos,
BASEORIDINAL[,classes=="numeric"]=scale(BASEORIDINAL[,classes=="numeric"])
head(BASEORIDINAL)
x=model.matrix(LUNG_CANCER~., BASEORIDINAL)
head(x)
(Intercept) GENDERM AGE SMOKINGYES YELLOW_FINGERSYES ANXIETYYES
1 1 1 0.77060032 0 1 1
2 1 0 -0.44738177 1 0 0
3 1 1 0.03981106 1 1 0
4 1 0 0.03981106 0 1 0
5 1 1 -1.29996923 1 0 0
6 1 0 -1.42176744 1 1 1
PEER_PRESSUREYES FATIGUEYES ALLERGYYES WHEEZINGYES `ALCOHOL CONSUMING`YES
1 0 1 0 1 1
2 1 1 0 1 0
3 1 0 0 0 1
4 0 0 0 1 0
5 0 1 0 1 1
6 1 1 1 0 0
`BLOOD PRESSURE` `SLEEP HOURS` BMI
1 0.1153801 -0.2558448 -1.6192774
2 -1.5204946 -0.2558448 0.6518382
3 -0.3176456 1.3911562 -0.3831304
4 -0.4619875 0.5676557 0.6240729
5 -0.3176456 -0.2558448 -0.2102984
6 -1.3280388 0.5676557 0.5477038
`DEGREE OF DIFFICULTY BREATHING`HIGH `DEGREE OF DIFFICULTY BREATHING`LOW
1 1 0
2 1 0
3 0 0
4 0 1
5 1 0
6 1 0
`DEGREE OF DIFFICULTY EATING`LOW `CHEST PAIN`
1 1 0.8910297
2 0 0.8910297
3 1 0.8910297
4 0 -1.1186650
5 0 0.8910297
6 0 -1.1186650
Se Observa que las variables numericas reescaladas contienen mismos valores iniciales.Cada una de las variables nominales ha sido convetida en variables binarias.El numero de variables binarias es siempre el numero de categorias de la variable nomenal.Por ejemplo, la variable Grender ( don dos categorias) ha sido conveetida en Gender Male que es una variable numerica que vale 1 caundo el sexo es hombre y o cuando es mujer.El resto de variables tambien son convertidas a binarias con el numero de categorias que cada una almacena.Los parametros correspondientes a las categorias retenidascomparan a estas con la categoria eliminada. Dividiremos el conjunto completo de insividuos en dos partes un para entrenar el modelo , que contiene el 60 % de los individuos y otra para validarlo que contiene 40% de individuos.Esto es asi porque si valoramos el modelo con las mismas observaciones
tr=round(nrow(BASEORIDINAL)*0.7)
set.seed(06055849)
muestra=sample.int(nrow(BASEORIDINAL),tr)
Train.cancer=BASEORIDINAL[muestra,]
Val.cancer=BASEORIDINAL[-muestra,]
library(stats)
summary(Train.cancer)
GENDER AGE SMOKING YELLOW_FINGERS
Length:216 Min. :-3.00514 Length:216 Length:216
Class :character 1st Qu.:-0.69098 Class :character Class :character
Mode :character Median :-0.08199 Mode :character Mode :character
Mean : 0.01500
3rd Qu.: 0.77060
Max. : 2.96297
ANXIETY PEER_PRESSURE FATIGUE ALLERGY
Length:216 Length:216 Length:216 Length:216
Class :character Class :character Class :character Class :character
Mode :character Mode :character Mode :character Mode :character
WHEEZING ALCOHOL CONSUMING BLOOD PRESSURE SLEEP HOURS
Length:216 Length:216 Min. :-5.85075 Min. :-1.90285
Class :character Class :character 1st Qu.:-0.55822 1st Qu.:-1.07935
Mode :character Mode :character Median :-0.12519 Median : 0.56766
Mean : 0.02717 Mean : 0.05678
3rd Qu.: 0.59652 3rd Qu.: 0.56766
Max. : 3.77204 Max. : 1.39116
BMI DEGREE OF DIFFICULTY BREATHING DEGREE OF DIFFICULTY EATING
Min. :-1.619277 Length:216 Length:216
1st Qu.:-0.316447 Class :character Class :character
Median : 0.335399 Mode :character Mode :character
Mean : 0.005465
3rd Qu.: 0.661802
Max. : 1.888700
CHEST PAIN LUNG_CANCER
Min. :-1.11867 Length:216
1st Qu.:-1.11867 Class :character
Median : 0.89103 Mode :character
Mean : 0.02574
3rd Qu.: 0.89103
Max. : 0.89103
Train.cancer$LUNG_CANCER <- as.factor(Train.cancer$LUNG_CANCER)
levels(Train.cancer$LUNG_CANCER)
[1] "NO" "YES"
gfit <- glm(LUNG_CANCER ~ ., data = Train.cancer, family = binomial)
summary(gfit)
Call:
glm(formula = LUNG_CANCER ~ ., family = binomial, data = Train.cancer)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.12553 1.51339 -2.065 0.038900 *
GENDERM -1.75524 0.96104 -1.826 0.067792 .
AGE -0.34661 0.44509 -0.779 0.436137
SMOKINGYES 0.29193 0.68013 0.429 0.667762
YELLOW_FINGERSYES 3.83594 1.14659 3.346 0.000821 ***
ANXIETYYES 1.54866 0.79358 1.951 0.050998 .
PEER_PRESSUREYES -0.60306 0.67656 -0.891 0.372736
FATIGUEYES 2.99727 1.04828 2.859 0.004247 **
ALLERGYYES 4.45522 1.24093 3.590 0.000330 ***
WHEEZINGYES 1.47677 0.80574 1.833 0.066830 .
`ALCOHOL CONSUMING`YES 2.50717 1.01594 2.468 0.013593 *
`BLOOD PRESSURE` 0.99138 0.41921 2.365 0.018035 *
`SLEEP HOURS` -0.92499 0.47288 -1.956 0.050454 .
BMI 0.27521 0.41077 0.670 0.502870
`DEGREE OF DIFFICULTY BREATHING`HIGH -0.36206 0.79172 -0.457 0.647448
`DEGREE OF DIFFICULTY BREATHING`LOW 0.03535 0.95744 0.037 0.970550
`DEGREE OF DIFFICULTY EATING`LOW 0.23392 0.74961 0.312 0.755002
`CHEST PAIN` 0.53841 0.43433 1.240 0.215107
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 142.185 on 215 degrees of freedom
Residual deviance: 64.248 on 198 degrees of freedom
AIC: 100.25
Number of Fisher Scoring iterations: 8
INTERPRETACION La salida del modelo de regresión logística binomial proporciona estimaciones de los coeficientes para cada variable predictora junto con su significancia estadística. Aquí está la descripción de las variables y su significancia en el modelo:
Intercepto (Intercept):
Estimado: -3.12553
Significancia: El intercepto es estadísticamente significativo con un valor p de 0.038900, lo que sugiere que la probabilidad de cáncer de pulmón difiere significativamente de cero cuando todas las demás variables son cero.
GENDERM (Género):
Estimado: -1.75524
Significancia: El género no es significativo en este modelo, ya que el valor p es mayor que 0.05 (0.067792).
AGE (Edad):
Estimado: -0.34661
Significancia: La edad no es significativa, ya que el valor p es mayor que 0.05 (0.436137).
SMOKINGYES (Fumador):
Estimado: 0.29193
Significancia: No es significativo (valor p > 0.05).
YELLOW_FINGERSYES (Dedos Amarillos):
Estimado: 3.83594
Significancia: Muy significativo con un valor p muy bajo (0.000821).
ANXIETYYES (Ansiedad):
Estimado: 1.54866
Significancia: Significativo con un valor p de 0.050998.
PEER_PRESSUREYES (Presión de Pares):
Estimado: -0.60306
Significancia: No es significativo (valor p > 0.05).
FATIGUEYES (Fatiga):
Estimado: 2.99727
Significancia: Muy significativo con un valor p bajo (0.004247).
ALLERGYYES (Alergias):
Estimado: 4.45522
Significancia: Muy significativo con un valor p muy bajo (0.000330).
WHEEZINGYES (Sibilancias):
Estimado: 1.47677
Significancia: Significativo con un valor p de 0.066830.
ALCOHOL CONSUMINGYES (Consumo de Alcohol):
Estimado: 2.50717
Significancia: Significativo con un valor p de 0.013593.
BLOOD PRESSURE (Presión Arterial):
Estimado: 0.99138
Significancia: Significativo con un valor p de 0.018035.
SLEEP HOURS (Horas de Sueño):
Estimado: -0.92499
Significancia: Significativo con un valor p de 0.050454.
BMI (Índice de Masa Corporal):
Estimado: 0.27521
Significancia: No es significativo (valor p > 0.05).
DEGREE OF DIFFICULTY BREATHING (Dificultad para Respirar):
HIGH (Alto): No es significativo (valor p > 0.05).
LOW (Bajo): No es significativo (valor p > 0.05).
DEGREE OF DIFFICULTY EATING (Dificultad para Comer):
LOW (Bajo): No es significativo (valor p > 0.05).
CHEST PAIN (Dolor en el Pecho):
Estimado: 0.53841
Significancia: No es significativo (valor p > 0.05).
ANALISIS ANOVA
summary(BASEORIDINAL$LUNG_CANCER)
Length Class Mode
309 character character
BASEORIDINAL$LUNG_CANCER <- as.factor(BASEORIDINAL$LUNG_CANCER)
levels(BASEORIDINAL$LUNG_CANCER)
[1] "NO" "YES"
class(BASEORIDINAL$LUNG_CANCER)
[1] "factor"
MAQUINAS DE VECTOS SOPORTE
Otro modelo de clasificacion binaria es el conocido como Suppory vector Machine Las paquetes que ajustan dlos modelos .Ajusyamos el modelo para nuestros datos.
VERIFICAMOS CON EL MODELO KERNEL radial
library(e1071)
## Warning: package 'e1071' was built under R version 4.3.2
fitsm1 <- svm(LUNG_CANCER~., data = Train.cancer)
summary(fitsm1)
##
## Call:
## svm(formula = LUNG_CANCER ~ ., data = Train.cancer)
##
##
## Parameters:
## SVM-Type: C-classification
## SVM-Kernel: radial
## cost: 1
##
## Number of Support Vectors: 82
##
## ( 60 22 )
##
##
## Number of Classes: 2
##
## Levels:
## NO YES