Interpolar datos en series temporales o espaciales

by Nacho

Aquí esta el código y alguna referencia para saber que hacer con aquellas series de datos en las que encontramos gaps, y que necesitamos rellenar para poder trabajar con ellas. El paquete [zoo] nos va a permitir obterner interpolaciones tanto con series temporales como con datos espaciales.

 
Temp <- read.table("temperatura 2010 2011.csv", header=TRUE, sep=";", na.strings="")
Temp$Date<-as.Date(Temp$Date) #caracterizamos el vector como datos temporales
x$Date<-seq(min(Temp$Date),max(Temp$Date),1) #creamos un nuevo vector con todas las fechas donde nos faltan datos
Mix<-merge(Temp,x, by="Date",all= T) # unimos el vector y la matriz de datos por la columna común "Date", nos apareceran 
                                     # fechas con NAs 
Data<-Mix[,c("Date","Temp")]         # Seleccionamos las columnas de interes y creamos una nueva matriz
library(zoo)                         # Cargamos el paquete zoo que nos va a permitir realizar las interpolaciones
z<-zoo(Data$Temp,Data$Date)          # zoo(objeto, index)
t1<-na.approx(z, na.rm = FALSE)      # Interpolación (na.rm= F no elimina aquellos gaps donde no puede realizar interpolación)
plain <- as.data.frame(coredata(t1)) # Convertimos en un dataframe
colnames(plain)<-"Temp1"             # denominamos la columna 
Data1<-c(Data,plain)                 # Creamos una nueva dataframe con la base con Temp (con Na's) y Temp1 (sin Na's)
Data1<-as.data.frame(Data1)

Métodos de interpolación:

na.approx(object, along = index(object), na.rm = TRUE, ...) #realiza una interpolación lineal para rellenar los NAs 
na.spline # realiza una interpolación cúbica por splines para rellenar los NAs 
na.locf # reemplaza NAs con el valor previo que no era NA
na.omit # ("zoo" object) elimina las observaciones incompletas
na.trim # recorta series de Nas lejos del inicio y al final pero no en el interior de la serie 
na.stinterp # (package [stinepack]) que realiza la interpolación de Stineman

Fuente:

Zoo Quick reference
stackoverflow.com

Leave a Reply

You must be logged in to post a comment.