2  Distribuição Weibull

A função densidade de probabilidade associada a variável aleatória tempo até o evento \(t\), possui uma grande variedade de formas, sendo sua função densidade, possuindo uma propriedade básica: a função taxa de falha sendo monótona, ou seja, crescente, decrescente ou constante.

Com distribuição Weibull é dada por:

\[ f(t) = \frac{\gamma}{\alpha^{\gamma}}\cdot t^{(\gamma-1)} \cdot exp\left[-\left(\frac{t}{\alpha}\right)^{\gamma} \right], \ t>0 \]

E função de sobrevivência dada por:
\[ S(t) = exp\left[ - \left(\frac{t_{i}}{\alpha}\right)^{\gamma}\right] \]

Os parâmetros de escala e forma, \(\alpha\) e \(\gamma\) são positivos. O parâmetro \(\alpha\) tem mesma medida de unidade de \(t\) e \(\gamma\) não tendo unidade de medida.

2.1 Função de verossimilhança é dada por:

\[ L(\theta | t) = \prod_{i=1}^{n} \left[ \left( \frac{\gamma}{\alpha^{\gamma}} \cdot t_{i}^{\gamma-1} \cdot \exp\left[ -\left( \frac{t_{i}}{\alpha} \right)^{\gamma} \right] \right)^{\delta_{i}} \cdot \left( \exp\left[ -\left( \frac{t_{i}}{\alpha} \right)^{\gamma} \right] \right)^{1-\delta_{i}} \right] \]

2.2 Log-verossimilhança da Weibull:

\[ \ell[L(\theta | t)] = \sum_{i=1}^{n} \left[ \delta_{i} \log \left( \frac{\gamma}{\alpha^{\gamma}} \cdot t_{i}^{\gamma-1} \right) - \left( \frac{t_{i}}{\alpha} \right)^{\gamma} \right] \]

\[ \ell[L(\theta | t)] = \sum_{i=1}^{n} \left[ \delta_{i} \left[ \log(\gamma) - \gamma \log(\alpha) + (\gamma - 1) \log(t_{i}) \right] - \left( \frac{t_{i}}{\alpha} \right)^{\gamma} \right] \]

2.3 Distribuição Log-Weibull (Gumbel)

\[L(\theta | y) = \prod_{i=1}^n \left[ \left( \frac{1}{\sigma} \exp \left[ \frac{y_i - \mu}{\sigma} - \exp \left( \frac{y_i - \mu}{\sigma} \right) \right] \right)^{\delta_i} \cdot \left( \exp \left[ -\exp \left( \frac{y_i - \mu}{\sigma} \right) \right] \right)^{1-\delta_i} \right]\]

\[\ell[L(\theta|y)] = \sum_{i=0}^{n}\left[\delta_{i} \log\left(\frac{1}{\sigma} \exp \left[ \frac{y_i - \mu}{\sigma} - \exp \left( \frac{y_i - \mu}{\sigma} \right) \right] \right) + (1-\delta_i) \log \left( \exp \left[ -\exp \left( \frac{y_i - \mu}{\sigma} \right) \right] \right)\right]\]

Desenvolvendo as exponencias, aplicando os logs e separando os termos multiplicados na segunda parte da equação por \(1-\delta_{i}\).

\[-\delta_{i} \exp \left[ \frac{y_i - \mu}{\sigma} \right] - \exp \left[\frac{y_{i} - \mu}{\sigma} \right]+ \delta{i} \exp \left[\frac{y_{i} - \mu}{\sigma} \right]\]

\[\ell[L(\theta | y)] = \sum_{i=1}^n \left[ \delta_i \left[ -\log(\sigma) + \left( \frac{y_i - \mu}{\sigma} \right) \right] - \exp \left( \frac{y_i - \mu}{\sigma} \right) \right]\]

2.4 Linearização da função de sobrevivência da Weibull

A função de sobrevivência do modelo de Weibull é dado por

\[ S(t) = \exp\left[- \frac{t}{\alpha}^{\lambda} \right] \]

Desse modo,

\[ -\log\left[S(t)\right] = \left( \frac{t}{\alpha}^{\lambda}\right) \]

tal que, de acordo com a equação \(y= a +bx\), se tem \(y=\log\left[-\log\left[S(t)\right]\right]\), \(a = -\lambda\log(\alpha)\), \(b=\lambda\), \(x=\log(t)\). Portanto, para que o modelo de Weibull seja considerado apropriado, gráfico \(\log\left[-\log\left[S(t)\right]\right]\) versus \(\log(t)\) deve ser aproximadamente linear, com \(\hat{S}(t)\) correspondendo ao estimador de Kaplan-Meier. Se além de linear, apresentar inclinação igual a 1, haverá evidências a favor do modelo exponencial.

2.5 Aplicação

log_vero_surv_weibull <- function(theta, t, status){
  
  alpha <- theta[1] 
  gamma <- theta[2]
  r <- status
  
  Log_L <- sum(r*(log(gamma)-gamma*log(alpha)+(gamma-1)*log(t))-(t/alpha)^gamma)
  
  if(!is.finite(Log_L)) return(1e10) #garante o tempo positivo apenas
  
  return(-Log_L)
}
# plot 1
t_seq <- seq(0, max(tempos), length.out = 100)
s_weibull <- exp(-(t_seq / alpha_est)^gamma_est)

#plot 2
# 1. Preparar os dados (remover S(t)=0 ou 1 para evitar log de erro)
indices <- which(km_c_bx$sobrevivencia > 0 & km_c_bx$sobrevivencia < 1)
t_km <- km_c_bx$tempo[indices]
s_km <- km_c_bx$sobrevivencia[indices]

# 2. Transformações lineares
y_weibull <- log(-log(s_km))
x_weibull <- log(t_km)