Interpolar los valores de NA

Tengo dos conjuntos de muestras que son independientes del tiempo. Me gustaría fusionarlos y calcular los valores perdidos para los momentos en los que no tengo valores de ambos. Ejemplo simplificado:

A <- cbind(time=c(10, 20, 30, 40, 50, 60, 70, 80, 90, 100), Avalue=c(1, 2, 3, 2, 1, 2, 3, 2, 1, 2)) B <- cbind(time=c(15, 30, 45, 60), Bvalue=c(100, 200, 300, 400)) C <- merge(A,B, all=TRUE) time Avalue Bvalue 1 10 1 NA 2 15 NA 100 3 20 2 NA 4 30 3 200 5 40 2 NA 6 45 NA 300 7 50 1 NA 8 60 2 400 9 70 3 NA 10 80 2 NA 11 90 1 NA 12 100 2 NA 

Al asumir un cambio lineal entre cada muestra, es posible calcular los valores de NA que faltan. Intuitivamente, es fácil ver que el valor A en el tiempo 15 y 45 debe ser 1.5. Pero un cálculo apropiado para B por ejemplo en el tiempo 20 sería

100 + (20 – 15) * (200 – 100) / (30 – 15)

que es igual a 133.33333. El primer paréntesis es el tiempo entre el tiempo estimado y la última muestra disponible. El segundo paréntesis es la diferencia entre las muestras más cercanas. El tercer paréntesis es el tiempo entre las muestras más cercanas.

¿Cómo puedo usar R para calcular los valores de NA?

Usando el paquete del zoo :

 library(zoo) Cz <- zoo(C) index(Cz) <- Cz[,1] Cz_approx <- na.approx(Cz) 

La forma correcta de hacerlo estadísticamente y aún así obtener intervalos de confianza válidos es usar Imputación múltiple. Vea el libro clásico de Rubin, y hay un excelente paquete de R para esto ( mi ) .

    Intereting Posts