This function implements a spatial regression model with differential regularization; anysotropic and nonstationary case. In particular, the regularizing term involves a second order elliptic PDE with spacevarying coefficients, that models the spacevariation of the phenomenon. Spacevarying covariates can be included in the model. The technique accurately handle data distributed over irregularly shaped domains. Moreover, various conditions can be imposed at the domain boundaries.
1 2 3 
locations 
A #observationsby2 matrix where each row specifies the spatial coordinates 
observations 
A vector of length #observations with the observed data values over the domain.
The locations of the observations can be specified with the 
FEMbasis 
A 
lambda 
A scalar or vector of smoothing parameters. 
PDE_parameters 
A list specifying the spacevarying parameters of the elliptic PDE in the regularizing term: 
covariates 
A #observationsby#covariates matrix where each row represents the covariates associated with the corresponding observed data value in 
BC 
A list with two vectors:

GCV 
Boolean. If 
CPP_CODE 
Boolean. If 
A list with the following variables:

A 

A 

If covariates is not 

If GCV is 

If GCV is 

If GCV is 
Azzimonti, L., Sangalli, L.M., Secchi, P., Domanin, M., and Nobile, F., 2014. Blood flow velocity field estimation via spatial regression with PDE penalization Blood flow velocity field estimation via spatial regression with PDE penalization. DOI. 10.1080/01621459.2014.946036.
Azzimonti, L., Nobile, F., Sangalli, L.M., and Secchi, P., 2014. Mixed Finite Elements for Spatial Regression with PDE Penalization. SIAM/ASA Journal on Uncertainty Quantification, 2(1), pp.305335.
smooth.FEM.basis
, smooth.FEM.PDE.basis
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42  # Loading the mesh
data(mesh.2D.rectangular)
# Create the FEM basis object
FEMbasis = create.FEM.basis(mesh.2D.rectangular)
# Create a vector of noisy samples of an underlying spatial field,
# located over the nodes of the mesh
observations = sin(0.2*pi*mesh.2D.rectangular$nodes[,1]) +
rnorm(n = nrow(mesh.2D.rectangular$nodes), sd = 0.1)
# Set the smoothing coefficient
lambda = c(10^2)
#Set the space vriant coefficients of the penalizying PDE
K_func<function(points)
{
mat<c(0.01,0,0,1)
output = array(0, c(2, 2, nrow(points)))
for (i in 1:nrow(points))
output[,,i] = 0.5*mat %*% t(points[i,1]^2)
output
}
b_func<function(points)
{
output = array(0, c(2, nrow(points)))
for (i in 1:nrow(points))
output[,i] = 0
output
}
c_func<function(points)
{
rep(c(0), nrow(points))
}
u_func<function(points)
{
rep(c(0), nrow(points))
}
# Assemble the parameters in one object
PDE_parameters = list(K = K_func, b = b_func, c = c_func, u = u_func)
# Estimate the underlying spatial field and plot these
FEM_CPP_PDE = smooth.FEM.PDE.sv.basis(observations = observations,
FEMbasis = FEMbasis, lambda = lambda, PDE_parameters = PDE_parameters)
plot(FEM_CPP_PDE$fit.FEM)

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
Please suggest features or report bugs with the GitHub issue tracker.
All documentation is copyright its authors; we didn't write any of that.