DoubleKrige: Function to perform double kriging

Description Usage Arguments Details Value Examples

Description

This function performs double kriging over the satellite grid using gauge observations and climatological variograms as defined in cvgm. The process consists of two steps: (1) kriging of binary occurrence indicators and back-transformation to a binary precipitation occurrence field; and, (2) kriging of rainfall amounts using a normal-score transformation to ensure Gaussian-distributed rainfall. The binary occurrence field is used to mask the interpolated amounts field and return a combined rainfall field.

Usage

1
2
DoubleKrige(gauge.ts, gauge.sp, gpm.ts, gpm.sp, ts.classification, clim_vgm,
  rain_threshold = 0.001, vgm.type = "KED")

Arguments

gauge.ts

A zoo object containing the gauge observations.

gauge.sp

A SpatialPointsDataFrame object containing the gauge locations and additional gauge attributes.

gpm.ts

A zoo object containing the gpm-imerg observations.

gpm.sp

A SpatialPointsDataFrame object containing the locations and numeric identifiers of the GPM-IMERG pixels.

ts.classification

A zoo object with a single data column defining the assigned class for each time-step.

clim_vgm

A list containing information on the climatological variograms as supplied by cvgm. See function cvgm for details.

rain_threshold

A numeric value defining the level below which all rainfall will be ignored and measurements treated as zeroes. This level can be set to the gauge detection limit, which typically is 0.1 or 0.2 mm/hr. However, the function requires a positive value to be supplied. Hence, if only actual zero-measurements are supposed to be treated as zeroes, use a miniscule value, such as 1e-4 (default).

vgm.type

A character string defining which data the variogram is to be calculated from. This can be either ordinary kriging ("OK") or kriging with external drift ("KED"; default). In the case of OK, only the gauge data is used. In the case of KED, the satellite is used as a secondary variable when defining the semi-variogram. The vgm.type should be the same as used in the fitting of the climatological semi-variogram in cvgm.

Details

In double kriging, the climatological variograms of precipitation occurrence and amounts are used to predict precipitation at pre-defined ungauged locations, which correspond to the grid nodes of the regular grid supplied by gpm.sp. In the first kriging step, binary occurrence indicators are interpolated to a continuous field ranging 0 to 1, which is then transformed into a binary field, using a threshold level of 0.5 (50

Value

Object dk A list containing four entries: (1) dk$Zs a time-series (zoo) object containing the estimated combined rainfall estimates (i.e. occurrence and amounts interpolation) for every grid node (as defined by gpm.sp) and time-step, (2) dk$Zs_var the combined kriging estimation variance (see details above) for each grid node and time-step, (3) dk$Zof a time-series (zoo) object containing the estimated binary rainfall occurrence field for every grid node (as defined bz gpm.sp) and time-step, (4) dk$Zof_var the binary occurrence kriging estimation variance for each grid node and timestep.

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
data(gpm) # STFDF object with gpm imerg observations
data(gauges) # STFDF object with gauge observations
gauges <- colocate(gauges,gpm,resolution=0.1,longlat=TRUE)
gauge.sp <- gauges@sp
gauge.ts <- as(gauges[,,1],"xts")
colnames(gauge.ts) <- gauge.sp$estacion
gpm.sp <- gpm@sp
gpm.ts <- as(gpm[,,1],"xts")
colnames(gpm.ts) <- gpm.sp$estacion
gauge.list <- combine_gauges(gauge.sp,gauge.ts)
gauge.sp <- gauge.list$sp
gauge.ts <- gauge.list$ts
ts.classification <- classify(gauge.ts,aggregation_level="season")
clim.vgms.ked <- cvgm(gauge.ts,gauge.sp,gpm.ts,gpm.sp,ts.classification,class_select=1,rain_threshold=0.001,vgm.type="KED",vgm.model=c("Exp"), class.dist=5)
dk.list <- DoubleKrige(gauge.ts,gauge.sp,gpm.ts,gpm.sp,ts.classification, clim_vgm=clim.vgms.ked,rain_threshold=0.001,vgm.type="KED")

bastianmanz/GPM_rain documentation built on May 11, 2019, 9:20 p.m.