Una máquina puede estar funcionando correctamente o no en cada corrida. Cada corrida se producen 500 productos, y se muestrean 10 para detectar defectos. Cuando la máquina funciona correctamente, la tasa de defectos es de 3%. Cuando la máquina no está funcionando correctamente la tasa de defectos es de 20%. Supongamos que escogemos al azar 11 corridas, y obervamos los siguientes número de defectuosos:

1, 0, 0, 3, 0, 0, 0, 2, 1, 0, 0

La pregunta es: ¿qué porcentaje del tiempo la máquina está funcionando correctamente?

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.2
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(purrr)
## Warning: package 'purrr' was built under R version 4.2.2
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.2
verosimilitud <- function(p){p^2*(1-p)^6
}
dat_verosim <- tibble(x = seq(0,1, 0.001))%>% mutate(prob = map_dbl(x, verosimilitud))
ggplot(dat_verosim, aes(x = x, y = prob)) + geom_line() +geom_vline(xintercept = 0.25, color = "red")+xlab("p")

calc_verosim <- function(r){
  q_func <- 0.03^r*(0.97)^(10-r)
  q_falla <- 0.2^r*(0.8)^(10-r)
  function(p){
    #nota: esta no es la mejor manera de calcularlo, hay 
    # que usar logaritmos.
    prod(p*q_func + (1-p)*q_falla)
  }
}
verosim <- calc_verosim(c(1, 0, 0, 3, 0, 0, 0, 2, 1, 0, 0))
verosim(0.1)
## [1] 2.692087e-14
dat_verosim <- tibble(x = seq(0,1, 0.001)) %>% mutate(prob = map_dbl(x, verosim))
ggplot(dat_verosim, aes(x = x, y = prob)) + geom_line() +
  geom_vline(xintercept = 0.8, color = "red") +
  xlab("prop funcionado")

Y nuestra estimación puntual sería de alrededor de 80%.

###################################################

Un estudiante de agricultura quiere determinar la tasa de germinación de semillas de un cultivo. Cada corrida consiste en plantar 50 semillas y se muestrean 20 para determinar la tasa de germinación. Cuando las condiciones son ideales, la tasa de germinación es del 45%. Cuando las condiciones no son ideales, la tasa de germinación es del 70%. Supongamos que el estudiante planta al azar 15 corridas y observa los siguientes números de semillas germinadas:

1,2,2,3,1,0,1,2,1,0,0,1,0,0,3

verosimilitud <- function(p){p^2*(1-p)^6
}
dat_verosim <- tibble(x = seq(0,1, 0.001))%>% mutate(prob = map_dbl(x, verosimilitud))
ggplot(dat_verosim, aes(x = x, y = prob)) + geom_line() +geom_vline(xintercept = 0.25, color = "red")+xlab("p")

calc_verosim <- function(r){
  q_func <- 0.45^r*(0.55)^(14-r)
  q_falla <- 0.20^r*(0.80)^(14-r)
  function(p){
    #nota: esta no es la mejor manera de calcularlo, hay 
    # que usar logaritmos.
    prod(p*q_func + (1-p)*q_falla)
  }
}
verosim <- calc_verosim(c(1,2,7,3,1,4,1,2,1,6,4,1,0,0,3))
verosim(0.1)
## [1] 1.360365e-42
dat_verosim <- tibble(x = seq(0,1, 0.001)) %>% mutate(prob = map_dbl(x, verosim))
ggplot(dat_verosim, aes(x = x, y = prob)) + geom_line() +
  geom_vline(xintercept = 0.08, color = "red") +
  xlab("prop funcionado")

Supongamos que en una población de transacciones hay un porcentaje p (desconocido) que son fraudulentas. Tenemos un sistema de clasificación humana que marca transacciones como sospechosas. Con este sistema hemos medido que la proporción de transacciones normales que son marcadas como sospechosas es de 0.1%, y que la proporción de transacciones fraudulentas que son marcadas como sospechosas es de 98%. Supongamos que extraemos una muestra de 2000 transacciones, de manera que todas ellas tiene la misma probabilidad de ser fraudulentas. El sistema de clasificación marca 4 transacciones como fraudulentas. ¿Cómo estimamos la proporción de transacciones fraudulentas en la población?

crear_log_verosim <- function(n, n_sosp){
  # devolver la función log verosimilitud 
  log_verosimilitud_pct <- function(pct){
    # sup que pct es la proporcentaje de fraudes,
    # que es el parámetro que queremos estimar
    prob_sosp <- 0.98 * pct / 100 + 0.001 * (1 - pct / 100)
    log_prob <- n_sosp * log(prob_sosp) + (n - n_sosp) * log(1- prob_sosp)
    log_prob
  }
  log_verosimilitud_pct
}
log_verosim <- crear_log_verosim(n = 2000, n_sosp = 4)
x <- seq(0, 100, by = 1)
y <- sapply(x, log_verosim)
df <- data.frame(x, y)
ggplot(df, aes(x = x, y = y)) + geom_line() +
  xlab("pct fraude") + ylab("log verosimilitud")

Esto significa que a medida que aumenta el porcentaje de fraude, la verosimilitud disminuye. La ausencia de una cúspide indica que la función no tiene un máximo o un mínimo local, sino que continúa disminuyendo con el aumento del porcentaje de fraude