Learn R Programming

GSIF (version 0.5-5.1)

mpspline: Fits a mass preserving spline

Description

Fits a mass preserving spline to a soil profile data.

Usage

# S4 method for SoilProfileCollection
mpspline(obj, var.name, 
        lam = 0.1, d = t(c(0,5,15,30,60,100,200)), vlow = 0, 
        vhigh = 1000, show.progress=TRUE)

Arguments

obj

object of class "SoilProfileCollection"

var.name

character; target variable name (must be a numeric variable)

lam

numeric; lambda the smoothing parameter

d

numeric; standard depths

vlow

numeric; smallest value of the target variable (smaller values will be replaced)

vhigh

numeric; highest value of the target variable (larger values will be replaced)

show.progress

logical; specifies whether to display the progress bar

Value

Returns a list with four elements:

idcol

site ID column

var.fitted

matrix; are are spline-estimated values of the target variable at observed depths (upper and lower depths are indicated as attributes)

var.std

matrix; are spline-estimated values of the target variable at standard depths

var.1cm

matrix; are spline-estimated values of the target variable using the 1 cm increments

References

See Also

stats::spline

Examples

Run this code
# NOT RUN {
library(aqp)
library(plyr)
library(sp)
## sample profile from Nigeria:
lon = 3.90; lat = 7.50; id = "ISRIC:NG0017"; FAO1988 = "LXp" 
top = c(0, 18, 36, 65, 87, 127) 
bottom = c(18, 36, 65, 87, 127, 181)
ORCDRC = c(18.4, 4.4, 3.6, 3.6, 3.2, 1.2)
munsell = c("7.5YR3/2", "7.5YR4/4", "2.5YR5/6", "5YR5/8", "5YR5/4", "10YR7/3")
## prepare a SoilProfileCollection:
prof1 <- join(data.frame(id, top, bottom, ORCDRC, munsell), 
         data.frame(id, lon, lat, FAO1988), type='inner')
depths(prof1) <- id ~ top + bottom
site(prof1) <- ~ lon + lat + FAO1988 
coordinates(prof1) <- ~ lon + lat
proj4string(prof1) <- CRS("+proj=longlat +datum=WGS84")
## fit a spline:
ORCDRC.s <- mpspline(prof1, var.name="ORCDRC")
str(ORCDRC.s)

## Example with multiple soil profiles
## Make some fake, but reasonable profiles:
rand.prof <- ldply(1:20, random_profile, n=c(6, 7, 8), n_prop=1, method='LPP')
## promote to SPC and plot
depths(rand.prof ) <- id ~ top + bottom
plot(rand.prof, color='p1')
## fit MP spline by profile
try( m <- mpspline(rand.prof, 'p1') )
# }

Run the code above in your browser using DataLab