# Instalar plotly si no está ya instalado
if (!requireNamespace("ggplot2", quietly = TRUE)) {
  install.packages("ggplot2")
}
# Instalar plotly si no está ya instalado
if (!requireNamespace("plotly", quietly = TRUE)) {
  install.packages("plotly")
}

# Cargar las librerías necesarias
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.3.3
library(plotly)
## Warning: package 'plotly' was built under R version 4.3.3
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
# Crear un data frame con los datos proporcionados
datos <- data.frame(
  proporcion_defectuosos = c(0.001, 0.005, 0.010, 0.015, 0.020, 0.030, 0.040, 0.050, 0.060, 0.070, 0.080, 0.100, 0.150),
  probabilidad_aceptacion = c(0.9982, 0.9634, 0.8787, 0.7227, 0.6619, 0.4592, 0.3022, 0.1915, 0.1179, 0.0709, 0.0417, 0.0137, 0.0006)
)

# Parámetros del plan de muestreo
n <- 60
c <- 1

# Función para calcular la probabilidad de aceptación
calc_pa <- function(p, n) {
  p0 <- dbinom(0, size = n, prob = p)
  p1 <- dbinom(1, size = n, prob = p)
  return(p0 + p1)
}

# Calcular las probabilidades de aceptación utilizando la distribución binomial
datos$pa_calculada <- sapply(datos$proporcion_defectuosos, calc_pa, n = n)

# Mostrar el data frame con los resultados calculados
print(datos)
##    proporcion_defectuosos probabilidad_aceptacion pa_calculada
## 1                   0.001                  0.9982 0.9982969987
## 2                   0.005                  0.9634 0.9634552163
## 3                   0.010                  0.8787 0.8787667287
## 4                   0.015                  0.7227 0.7727676870
## 5                   0.020                  0.6619 0.6619039297
## 6                   0.030                  0.4592 0.4592107971
## 7                   0.040                  0.3022 0.3022331007
## 8                   0.050                  0.1915 0.1915533747
## 9                   0.060                  0.1179 0.1179231890
## 10                  0.070                  0.0709 0.0708943018
## 11                  0.080                  0.0417 0.0417712856
## 12                  0.100                  0.0137 0.0137770790
## 13                  0.150                  0.0006 0.0006747655
# Crear el gráfico con ggplot2
p <- ggplot(datos, aes(x = proporcion_defectuosos, y = pa_calculada)) +
  geom_line(color = "blue", size = 1) +
  geom_point(color = "red") +
  geom_point(aes(y = probabilidad_aceptacion), color = "green", shape = 4) +
  labs(title = "Curva de Operación",
       x = "Proporción de Defectuosos (p)",
       y = "Probabilidad de Aceptación (Pa)") +
  theme_minimal() +
  geom_text(aes(label=round(pa_calculada, 4)), vjust=-1.5, color="blue", size=3.5) +
  geom_text(aes(y = probabilidad_aceptacion, label=round(probabilidad_aceptacion, 4)), vjust=1.5, color="green", size=3.5)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
# Convertir el gráfico a un gráfico interactivo con plotly
p_interactivo <- ggplotly(p)

# Mostrar el gráfico interactivo
p_interactivo