(Mis) procesos puntuales con glm
Lo que escribí hace un par de días sobre procesos puntuales, ahora me doy cuenta, podía haberse resuelto con nuestro viejo amigo glm
.
Ejecuto el código del otro día y obtengo (para un caso nuevo)
mu alfa verosimilitud delta
1 0.4493158 0.50000000 340.6141 1
2 0.2675349 0.40457418 307.3939 2
3 0.1894562 0.28917407 293.4696 3
4 0.1495654 0.22237707 287.0784 4
5 0.1243791 0.18079703 281.3900 5
6 0.1142837 0.14913172 284.9227 6
7 0.1217504 0.12150745 288.5448 7
8 0.1214365 0.10424818 289.3282 8
9 0.1204605 0.09148817 290.9081 9
10 0.1315896 0.07857330 295.3935 10</code>
que significa que el parámetro óptimo es delta = 5
, mu = 0.124
y alfa = 0.18
.
Ahora hago
cuantos.previos <- function(i, muestra, delta){
indices <- Filter(function(x) x < i & x > i - delta, 1:n)
cuantos <- sum(muestra[indices])
}
fit.glm <- function(delta){
prev <- sapply(1:length(muestra),
cuantos.previos, muestra, delta)
dat <- data.frame(muestra = muestra, prev = prev)
res.glm <- glm(muestra ~ prev, data = dat,
family = poisson(link = "identity"))
c(delta, res.glm$coefficients, summary(res.glm)$aic)
}
res.glm <- sapply(1:10, fit.glm)
res.glm <- as.data.frame(t(res.glm))
colnames(res.glm) <- c("delta", "mu", "alfa", "aic")
y obtengo
delta mu alfa aic
1 1 0.4493151 NA 683.2282
2 2 0.2675337 0.40457432 618.7877
3 3 0.1894536 0.28917516 590.9391
4 4 0.1495631 0.22237700 578.1569
5 5 0.1243779 0.18079585 566.7799
6 6 0.1142817 0.14913071 573.8454
7 7 0.1217500 0.12150532 581.0896
8 8 0.1214371 0.10424691 582.6564
9 9 0.1204672 0.09148587 585.8163
10 10 0.1315951 0.07856897 594.7869
que viene a ser lo mismo que antes. Solo que mucho más rápido.