load("C:/Users/pilar/Downloads/crab.RData")
head(crab)
## crab satellites weight width color spine y
## 1 1 8 3.05 28.3 2 3 1
## 2 2 0 1.55 22.5 3 3 0
## 3 3 9 2.30 26.0 1 1 1
## 4 4 0 2.10 24.8 3 3 0
## 5 5 4 2.60 26.0 3 3 1
## 6 6 0 2.10 23.8 2 3 0
crab$Y <- ifelse(crab$satellites > 0, 1, 0)
table(crab$Y)
##
## 0 1
## 62 111
Se puede observar que para el caso de la variable Y, la cual representa de manera binomial el número de satélites presentes de acuerdo a cada individuo, se presentaron 62 casos en los cuales el número de satélites equivale a cero y 111 casos en los cuales representan más de un satélite
table(crab$color)
##
## 1 2 3 4
## 12 95 44 22
require(ggplot2)
ggplot(crab, aes(x = factor(color), fill = factor(y))) +
geom_bar(position = "dodge") +
labs(
title = "Número de cangrejos con y sin satélite según color",
x = "Color",
y = "Número de cangrejos",
fill = "Satélite (0 = No, 1 = Sí)"
) +
theme_minimal(base_size = 14)
Por otro lado, con respecto al color se puede afirmar que la mayoría de los individuos demostraron colores medios(2), presentándose en 95 de los individuos, mientras que los individuos de colores claros(1) solo fueron 12. El diagrama muestra la relación entre la variable de color y la presencia de satélites. Para los individuos de colores medios hubo más presencia de satélites que en los demás colores.
table(crab$spine)
##
## 1 2 3
## 37 15 121
require(ggplot2)
ggplot(crab, aes(x = factor(spine), fill = factor(y))) +
geom_bar(position = "dodge") +
labs(
title = "Número de cangrejos con y sin satélite según espina",
x = "Espina",
y = "Número de cangrejos",
fill = "Satélite (0 = No, 1 = Sí)"
) +
theme_minimal(base_size = 14)
Con respecto a la presencia de la espina, la mayoría de los individuos evidencio tener ambas espinas gastabas o quebradas, mientras que solamente 15 de los individuos presentaron 1 espina gastaba o quebrada. Los individuos que reportaban tener ambas espinas quebradas o gastadas son los que tiene la mayor presencia de satélites.
hist(crab$weight, main = "Distribucion del Peso", xlab = "Peso", col = "skyblue", border = "white")
summary(crab$weight)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.200 2.000 2.350 2.437 2.850 5.200
Para las variables numéricas, el histograma muestra la distribución de los valores de peso de los individuos. Se puede afirmar que los datos de peso se concentran entre 2 y 3, teniendo una media de 2.4. Igualmente, se observa un valor atípico que corresponde al máximo de 5.2, mientras que el mínimo es de 1.2.
hist(crab$width, main = "Distribucion del Ancho", xlab = "Ancho (mm)", col = "lightgreen", border = "white")
summary(crab$width)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 21.0 24.9 26.1 26.3 27.7 33.5
Para la distribución de los valores de ancho del caparazón, se observa que los datos se concentran entre valores de 24 y 28 mm, presentando una media de 26.3. Igualmente, se observa un valor atípico que corresponde al máximo de 33.5, mientras que un mínimo de 21 mm.
require(ggplot2)
ggplot(crab, aes(x = width, y = weight, color = factor(y))) +
geom_point() +
labs(title = "Relación entre Peso y Ancho según presencia de satélite",
x = "Ancho", y = "Peso")
En el gráfico es posible observar la relación entre las variables
numéricas y la presencia de satélites, se puede afirmar que hay una
tendencia a que a mayor peso y ancho el número de satélites aumenta.
modelo <- glm(y ~ width + weight + color + spine,
data = crab,
family = "binomial")
summary(modelo)
##
## Call:
## glm(formula = y ~ width + weight + color + spine, family = "binomial",
## data = crab)
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -7.5994 3.7542 -2.024 0.0429 *
## width 0.2733 0.1893 1.443 0.1489
## weight 0.7949 0.6917 1.149 0.2505
## color -0.5915 0.2417 -2.447 0.0144 *
## spine 0.2717 0.2410 1.127 0.2597
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 225.76 on 172 degrees of freedom
## Residual deviance: 186.66 on 168 degrees of freedom
## AIC: 196.66
##
## Number of Fisher Scoring iterations: 4
De acuerdo al modelo se observa que la variable de color es la más significativa, por lo cual puede que los cangrejos con color más oscuros presentar una menor probabilidad de tener satélites. El modelo indica que el color del caparazón tiene un efecto significativo sobre la probabilidad de que un cangrejo tenga satélites: los individuos más claros tienden a tener más satélites. Aunque el tamaño (ancho y peso) muestra una tendencia positiva, las diferencias no alcanzan significancia estadística, lo cual se puede deber a los desbalances en las categorías color y espina por el número de observaciones tan variables.
crab$prob_predicha =predict(modelo, type = "response")
crab$pred_clase =ifelse(crab$prob_predicha >= 0.5, 1, 0)
head(crab[, c("y", "prob_predicha", "pred_clase")])
## y prob_predicha pred_clase
## 1 1 0.8993705 1
## 2 0 0.2353110 0
## 3 1 0.7337477 1
## 4 0 0.4718147 0
## 5 1 0.6485142 1
## 6 0 0.5511740 1
# Tabla de confusión
confusion_matrix=table(Observado=crab$Y,prediccion=crab$pred_clase)
print(confusion_matrix)
## prediccion
## Observado 0 1
## 0 31 31
## 1 16 95
accuracy= ((95+31)/173*100)
print(accuracy)
## [1] 72.83237
sensiblidad=((95/(95+16)))
print(sensiblidad)
## [1] 0.8558559
especificidad= (31/(31+31))
print(especificidad)
## [1] 0.5
El modelo predice correctamente el 72% de los casos, tiene un valor de sensibilidad de 85, lo cual da a entender que detecta la mayoría de los cangrejos que si tienen satélite, pero por su valor de especificidad bajo genera 31 casos falsos positivos, confundiendo a los que no tienen como si sí los tuvieran.