Description Usage Arguments Value Author(s) References See Also Examples
View source: R/createProductRuleGrid.R
Creates nodes and weights according to the product rule, combining 1D nodes and weights. Sparse grids can be created with the function createSparseGrid.
1 | createProductRuleGrid(type, dimension, k, sym = FALSE)
|
type |
String or function for type of 1D integration rule, can take on values
|
dimension |
dimension of the integration problem. |
k |
Accuracy level. The rule will be exact for polynomial up to total order 2k-1. |
sym |
(optional) only used for own 1D quadrature rule (type not "KPU",...). If sym is supplied and not FALSE, the code will run faster but will produce incorrect results if 1D quadrature rule is asymmetric. |
The return value contains a list with nodes and weights
nodes |
matrix with a node in each row |
weights |
vector with corresponding weights |
Jelmer Ypma
Florian Heiss, Viktor Winschel, Likelihood approximation by numerical integration on sparse grids, Journal of Econometrics, Volume 144, Issue 1, May 2008, Pages 62-80, http://www.sparse-grids.de
createSparseGrid
createMonteCarloGrid
createIntegrationGrid
integrate
pmvnorm
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | # load library
library('SparseGrid')
# define function to be integrated
# g(x) = x[1] * x[2] * ... * x[n]
g <- function( x ) {
return( prod( x ) )
}
#
# Create sparse integration grid to approximate integral of a function with uniform weights
#
sp.grid <- createSparseGrid( 'KPU', dimension=3, k=5 )
# number of nodes and weights
length( sp.grid$weights )
# evaluate function g in nodes
gx.sp <- apply( sp.grid$nodes, 1, g )
# take weighted sum to get approximation for the integral
val.sp <- gx.sp %*% sp.grid$weights
#
# Create integration grid to approximate integral of a function with uniform weights
#
pr.grid <- createProductRuleGrid( 'KPU', dimension=3, k=5 )
# number of nodes and weights
length( pr.grid$weights )
# evaluate function g in nodes
gx.pr <- apply( pr.grid$nodes, 1, g )
# take weighted sum to get approximation for the integral
val.pr <- gx.pr %*% pr.grid$weights
#
# Create integration grid to approximation integral using Monte Carlo simulation
#
set.seed( 3141 )
mc.grid <- createMonteCarloGrid( runif, dimension=3, num.sim=1000 )
# number of nodes and weights
length( mc.grid$weights )
# evaluate function g in MC nodes
gx.mc <- apply( mc.grid$nodes, 1, g )
# take weighted sum to get approximation for the integral
# the weights are all equal to 1/1000 in this case
val.mc <- gx.mc %*% mc.grid$weights
val.sp
val.pr
val.mc
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.