Introduction to SparseGrid

Similar documents
Multidimensional interpolation. 1 An abstract description of interpolation in one dimension

Slow Exponential Growth for Clenshaw Curtis Sparse Grids jburkardt/presentations/... slow growth paper.

Bayesian Estimation with Sparse Grids

Orthogonal Polynomials, Quadratures & Sparse-Grid Methods for Probability Integrals

Slow Growth for Gauss Legendre Sparse Grids

Statistical Computing: Exam 1 Chapters 1, 3, 5

In manycomputationaleconomicapplications, one must compute thede nite n

Pascal s Triangle on a Budget. Accuracy, Precision and Efficiency in Sparse Grids

Accuracy, Precision and Efficiency in Sparse Grids

Key Concepts: Economic Computation, Part III

Slow Growth for Sparse Grids

2D Plotting with Matlab

4 Integration. Copyright Cengage Learning. All rights reserved.

Package symmoments. R topics documented: February 20, Type Package

R Package FME : Inverse Modelling, Sensitivity, Monte Carlo Applied to a Steady-State Model

Bayesian Inference for Regression Parameters

ECONOMICS 207 SPRING 2006 LABORATORY EXERCISE 5 KEY. 8 = 10(5x 2) = 9(3x + 8), x 50x 20 = 27x x = 92 x = 4. 8x 2 22x + 15 = 0 (2x 3)(4x 5) = 0

User Guide for Hermir version 0.9: Toolbox for Synthesis of Multivariate Stationary Gaussian and non-gaussian Series

8 STOCHASTIC SIMULATION

PROJECTION METHODS FOR DYNAMIC MODELS

Copula-Based Random Effects Models

Hochdimensionale Integration

FastGP: an R package for Gaussian processes

Lecture XI. Approximating the Invariant Distribution

Integrating Correlated Bayesian Networks Using Maximum Entropy

ML estimation: Random-intercepts logistic model. and z

Higher order derivatives of the inverse function

DUBLIN CITY UNIVERSITY

Tutorial on Markov Chain Monte Carlo Simulations and Their Statistical Analysis (in Fortran)

Finite Mixture Model Diagnostics Using Resampling Methods

Exercise Sheet 8 - Solutions

Naive Bayes & Introduction to Gaussians

Function Approximation

Equations Introduction

An Empirical Chaos Expansion Method for Uncertainty Quantification

Sequential Implementation of Monte Carlo Tests with Uniformly Bounded Resampling Risk

Finite Elements. Colin Cotter. January 15, Colin Cotter FEM

Simulation. Li Zhao, SJTU. Spring, Li Zhao Simulation 1 / 19

Package rarpack. August 29, 2016

Performance of the BIC q : Simulation Experiment

Interpolation. 1. Judd, K. Numerical Methods in Economics, Cambridge: MIT Press. Chapter

Quadrature Filters for Maneuvering Target Tracking

Sparse Grids for Stochastic Integrals

An Application of Graph Theory in Markov Chains Reliability Analysis

Numerical Methods I Monte Carlo Methods

Package sscor. January 28, 2016

Markov chain Monte Carlo

A Brief Introduction To. GRTensor. On MAPLE Platform. A write-up for the presentation delivered on the same topic as a part of the course PHYS 601

4. Multi-linear algebra (MLA) with Kronecker-product data.

Prof. Thistleton MAT 505 Introduction to Probability Lecture 13

DAG models and Markov Chain Monte Carlo methods a short overview

Nguyen, N., Rock, D., and Ying, V. Math 470 Spring 2011 Project 5 Problem 3.24

Differentiation and Integration

Package FEM. January 24, 2018

Adaptive Collocation with Kernel Density Estimation

Pseudocode for calculating Eigenfactor TM Score and Article Influence TM Score using data from Thomson-Reuters Journal Citations Reports

3. Numerical integration

MALA versus Random Walk Metropolis Dootika Vats June 4, 2017

Scientific Computing: Monte Carlo

The AGA Ratings System

Overview. Multidimensional Item Response Theory. Lecture #12 ICPSR Item Response Theory Workshop. Basics of MIRT Assumptions Models Applications

Statistics II: Estimating simple parametric models

An Algorithmist s Toolkit September 24, Lecture 5

Introduction. J.M. Burgers Center Graduate Course CFD I January Least-Squares Spectral Element Methods

General Recipe for Constant-Coefficient Equations

A quick guide to PLANOR, an R library for the automatic generation of regular fractional factorial designs

Exponential Families

Dynamic System Identification using HDMR-Bayesian Technique

TMA4220: Programming project - part 1

Estimating the Pure Characteristics Demand Model: A Computational Note

Applied Computational Economics Workshop. Part 3: Nonlinear Equations

Single-Gaussian Messages and Noise Thresholds for Low-Density Lattice Codes

Combining Interval and Probabilistic Uncertainty in Engineering Applications

Then the distribution of X is called the standard normal distribution, denoted by N(0, 1).

Developing Confidence in Your Net-to-Gross Ratio Estimates

2 Random Variable Generation

1 Priors, Contd. ISyE8843A, Brani Vidakovic Handout Nuisance Parameters

Computer projects for Mathematical Statistics, MA 486. Some practical hints for doing computer projects with MATLAB:

Variational Principal Components

Package ZIBBSeqDiscovery

3. Probability and Statistics

Algorithms for Uncertainty Quantification

Simulating with uncertainty : the rough surface scattering problem

COMS 6100 Class Notes

A Fast Fourier transform based direct solver for the Helmholtz problem. AANMPDE 2017 Palaiochora, Crete, Oct 2, 2017

Package denseflmm. R topics documented: March 17, 2017

Dynamic Programming with Hermite Interpolation

ALDEx: ANOVA-Like Differential Gene Expression Analysis of Single-Organism and Meta-RNA-Seq

Ch. 03 Numerical Quadrature. Andrea Mignone Physics Department, University of Torino AA

CHUNG-ANG UNIVERSITY Linear Algebra Spring Solutions to Computer Project #2

Parametric Techniques Lecture 3

A Polynomial Chaos Approach to Robust Multiobjective Optimization

Parameterized Expectations Algorithm

Bayesian Scientific Computing D. Calvetti & E. Sommersalo

First steps of multivariate data analysis

Kazuhiko Kakamu Department of Economics Finance, Institute for Advanced Studies. Abstract

Reduction of Variance. Importance Sampling

Non-Conjugate Models and Grid Approximations. Patrick Lam

18.085: Summer 2016 Due: 3 August 2016 (in class) Problem Set 8

Chaos, Complexity, and Inference (36-462)

Transcription:

Introduction to SparseGrid Jelmer Ypma July 31, 2013 Abstract This vignette describes how to use SparseGrid, which is an R translation 1 of the Matlab code on http://www.sparse-grids.de (Heiss and Winschel, 2008). Sparse grids can be used to numerically approximate integrals of high dimension, with fewer nodes than grids constructed by a product rule. 1 Introduction Integrals arise in many places in statistics, for instance when calculating likelihood contributions in latent variable models (where some of the underlying variables are not observed), or when calculating conditional expectations or moments of functions of random variables. When an analytic solution to these integrals is not available, they have to be evaluated numerically. There are many texts providing a description of how to numerically approximate integrals (e.g. see Judd, 1998; Miranda and Fackler, 2002, for an introduction to different approximation methods). Basically, many of the methods to approximate an integral in 1 dimension, rewrite the integral as a weighted sum Ω g(x)f(x)dx R w r g(x r ), where Ω is the domain that we d like to integrate over. The function g(x) is the function of interest, and f(x) is a weighting function. In statistics f(x) will usually be the probability density function of x. For instance, if we re interested in the mean of x, where x is normally distributed, then we can write this as an integral 1 E[x] = x e (x µ)2 2σ 2 dx. 2πσ {{ g(x) r=1 {{ f(x) For this choice of g(x) there is of course a closed-form solution, but the integral has to be approximated numerically for more complicated functions g(x). Depending on the function f( ), there are standard (quadrature) rules to choose w r, referred to as weights, and x r, referred to as nodes. This package should be considered in beta and comments about any aspect of the package are welcome. This document is an R vignette prepared with the aid of Sweave (Leisch, 2002). 1 Florian Heiss and Viktor Winschel kindly provided permission to make this R package based on their Matlab version publicly available. 1

Four quadrature rules are included with SparseGrid. The first two, GQU and KPU,canbeusedforunweightedintegrationonaunitdomain,Ω = [0,1] D,f(x) = 1. These can be used if the random variables that we want to integrate out have a uniform distribution, since f(x) = 1 is the probability density function of a uniformly distributed random variable. The other two quadrature rules, GQN and KPN, can be used to approximate a Guassian-weighted integral on R D. 2 Integration over multiple dimensions In multiple dimensions, a straightforward way to combine the nodes and weights of single dimensions, is by using a product rule. The nodes of the multidimensional approximation are the kronecker product of the separate dimensions x = x 1 x 2 x D, where D is the number of dimensions. For instance, for two dimensions x 1,1 x 2,1 x 1,1 x 2,2 x 1,1 x 2,R2 x = x 1 x 2 = x 1,2 x 2,1, x 1,2 x 2,R2 x 1,R1 x 2,R2 where x d,k is the k-th node in dimension d. For the two-dimensional example, the total number of integration nodes is R 1 R 2. In general, when we have R nodes in each dimension, the number of nodes needed to approximate a D dimensional integral is R D. Table 1: Number of nodes used by SGI or product rule, k = 5, type=gqu D 1 2 3 4 5 6 7 8 9 SGI 5 53 165 385 781 1433 2437 3905 5965 k D 5 25 125 625 3125 15625 78125 390625 1953125 Heiss and Winschel (2008) describe how sparse grids can be used to approximate multi-dimensional integrals, that occur for instance in estimation problems 2. As an example they compare different ways of approximating the high-dimensional integrals that arise in mixed logit models. The benefit of using sparse grids, is that fewer integration nodes are needed than in the case of the product rule, except for low dimensional integrals. Table 1 shows the number of nodes that are needed for the two methods for different 2 Another way to deal with the curse of dimensionality is to use Monte Carlo metohds to approximate the integral. 2

dimensions. For instance, in 8 dimensions the product rule uses 3905 integration nodes and sparse grid integration requires 390625 nodes. Of course, this reduction in number of integration nodes comes at a cost (see Heiss and Winschel, 2008, for details). The parameter, k, in table 1 controls the accuracy of the approximation. A sparse grid of accuracy k can accurately integrate the function g(x) if g(x) is a polynomial of total order 2k 1. For example, the polynomial a 1 x 3 1 +a 2 x 2 1x 2 +a 3 x 1 x 2 2 ++a 4 x 1 +a 5 x 2 2 +a 6 x 2 2 +a 7 x 3 2, is of total order 3, since the maximum of the sum of the exponents in each term is 3. The product rule grid based on the same one-dimensional quadrature nodes is accurate for higher dimensions, terms such as x 3 1x 2 2,x 3 1x 3 2,x 1 x 3 2 can also occur. Since these higher orders grow exponentially 3, the number of nodes needed to approximate this polynomial without error grows exponentially. The number of nodes used in sparse grid integration are smaller by bounding the total order of the polynomial that is integrated exactly. This difference in accuracy is the reason why sparse grids contain less nodes then grids constructed by the product rule. For general problems you usually want to approximate integrals of functions g(x) that can not be written as a polynomial. However, the function g(x) might be well approximated by a low-order polynomial. In these cases it is good practice to check if the approximation to the integral is accurate enough for your specific problem. One way to get a sense of the accuracy of the approximation, is to compare approximations obtained using different grids. For instance by increasing the number of nodes, using sparse grids, product rule grids or Monte Carlo grids with different seeds for the random number generator. 3 Installation The package can be installed from CRAN > install.packages(³sparsegrid³) After which you should be able to load the package using > library(³sparsegrid³) And get help for the main function with >?SparseGrid Information on how to cite the original paper on which this code is based is obtained through > citation(³sparsegrid³) This paper describes the theory/code on which SparseGrid is based: 3 If there are 5 dimensions, the tensor product of the same univariate integration grid is also exact for the term x 3 1 x3 2 x3 3 x3 4 x3 5. The total order of this term is 15, and grows with the dimension of the integration. 3

Florian Heiss, Viktor Winschel, Likelihood approximation by numerical integration on sparse grids, Journal of Econometrics, Volume 144, Issue 1, May 2008, Pages 62-80 A BibTeX entry for LaTeX users is @Article{, title = {Likelihood approximation by numerical integration on sparse grids, author = {Florian Heiss and Viktor Winschel, journal = {Journal of Econometrics, volume = {144, number = {1, pages = {62--80, year = {2008, More information is available from the website: http://www.sparse-grids.de 4 Overview of available functions There are four different functions to create grids for integration. Each of these functions returns a list with two elements; nodes, a matrix of nodes, and weights, a vector of weights. More information can be obtained from their respective help pages. >?createsparsegrid >?createproductrulegrid >?createmontecarlogrid >?createintegrationgrid Another function that is included in the packages is readascgrid, which can be used to read files with integration grids as available on the website http://www.sparse-grids.de. 5 Example This section contains an example based on the one available from http://www.sparsegrids.de. The example shows how to approximate an integral with sparse grids, and compares it to approximating the same integral using Monte Carlo simulation. The integral that we want to approximate is 1 ( 1 D ) 1 I = e 1 2 x2 d dx D dx 1. 2π 0 0 d=1 {{ g(x) 4

Theintegrationdomainofthisfunctionis[0,1] D andwecanuseaunit weighting function f(x) = 1, so we can use the KPU or GQU methods to create sparse grids for numerical approximation of the integral. First, load the library, > library(³sparsegrid³) and create a sparse grid of dimension = 10, and with accuracy k = 2 > dimension <- 10 > k <- 2 > sgrid <- createsparsegrid( type=³kpu³, dimension=dimension, k=k ) This grid has > length( sgrid$weights ) [1] 21 nodes for the chosen accuracy. Usually we only have to create this grid once at the beginning of an estimation procedure, and can re-use the same grid to approximate different integrals (e.g. the likelihood contributions of different individuals, or the approximation to an integral in different iterations of an optimization method). Then, we define the function g in R that calculates the function g(x) defined above at a given point x > g <- function( x, mu=0, sigma=1 ) { return( prod( exp(-.5*((x-mu)/sigma)^2)/sqrt(2*pi*sigma^2) ) ) Note that this function only works on one gridpoint at a time. Because we want to evaluate the function at many gridpoints (each row in sgrid$nodes is a separate gridpoint), we write this convenience function that performs the approximation. > approximate.integral <- function( func, sgrid,... ) { gx <- apply( sgrid$nodes, 1, function(x) { func(x,...) ) return( sum( gx * sgrid$weights ) ) The first line of this function loops over the rows (gridpoints) of the integration grid and evaluates the function at each gridpoint. This results in a vector gx. We then multiply this vector by the corresponding weights and take the sum. This weighted sum is our approximation to the integral. > sigma <- 2 > approximate.integral( g, sgrid, mu=0, sigma=sigma ) [1] 6.58969e-08 In R we can get the exact solution 4 using > trueval <- ( pnorm( 1, mean=0, sd=2 ) - pnorm( 0, mean=0, sd=sigma ) )^dimension 4 pnorm itself is not completely exact, but is an approximation using the erf-function. 5

so we can compare the approximation using different accuracies for the sparse grid, and the Monte Carlo integration with the true value. We can also approximate the integral using a grid of num.sim = 1000 random points drawn from the uniform distribition > num.sim <- 1000 > set.seed( 3141 ) > mcgrid <- createmontecarlogrid( runif, dimension=dimension, num.sim=num.sim ) and evaluate the function that we want to integrate over to get an approximation by Monte Carlo simulation > approximate.integral( g, mcgrid, mu=0, sigma=sigma ) [1] 6.58229e-08 Below, we compare the error for this specific case for different accuracies of the sparse grid. The number of nodes used in the Monte Carlo approximation to the integral are the same as the number of nodes in the sparse grid. This enables us to compare the error of both methods when the computation time is the same, since conditional on the number of integration nodes, the computation time for the two methods is the same. First we set the random seed, the dimension of the integration and the maximum accuracy level for which we want to approximate the integral. > set.seed( 3141 ) > dimension <- 10 # dimension of integral > maxk <- 4 # max. accuracy level (pol. exactness wil be 2k-1) Then we create a matrix of the right dimensions that will hold the results. > # create matrix to hold results > res <- matrix( NA, nrow=maxk-1, ncol=5 ) > colnames( res ) <- c("d", "k", "nodes", "SG error", "MC error") > rownames( res ) <- rep( "", maxk-1 ) The comparision is performed by looping over the requested accuracy levels. For each accuracy level we create a sparse grid, and do the approximation and calculate the approximation error by comparing the approximated value to the true value. Since Monte Carlo approximations are different for each seed of the random generator, we use the mean of 1000 approximated values and calculate the approximation error based on this mean. The results are then saved in res. > # loop over different accuracy levels > for ( k in 2:maxk ) { # sparse grid integration sgrid <- createsparsegrid(³kpu³, dimension, k) SGappr <- approximate.integral( g, sgrid, mu=0, sigma=sigma ) SGerror <- sqrt((sgappr - trueval)^2) / trueval # Monte Carlo integration with the same number of nodes 6

# 1000 simulation repetitions num.nodes <- length( sgrid$weights ) MCappr <- rep(0, 1000) for (r in 1:1000) { mcgrid <- createmontecarlogrid( runif, dimension=dimension, num.sim=num.nodes ) MCappr[ r ] <- approximate.integral( g, mcgrid, mu=0, sigma=sigma ) MCerror = sqrt(mean((mcappr-trueval)^2)) / trueval # save results in row of matrix res res[k-1,] <- c(dimension, k, num.nodes, SGerror, MCerror) The results for this comparison are given in the following table > res D k nodes SG error MC error 10 2 21 4.528995e-03 0.024644168 10 3 201 1.189321e-04 0.007877159 10 4 1201 2.073774e-06 0.003383167 For this specific example we see that the error for sparse grid integration declines much more rapidly when increasing the number of nodes than the error when approximating the integral using Monte Carlo simulation. References Florian Heiss and Viktor Winschel. Likelihood approximation by numerical integration on sparse grids. Journal of Econometrics, 144(1):62 80, 2008. K.L. Judd. Numerical methods in economics. MIT Press, Cambridge, MA, USA, 1998. ISBN 9780262100717. Friedrich Leisch. Sweave: Dynamic generation of statistical reports using literate data analysis. In Wolfgang Härdle and Bernd Rönz, editors, Compstat 2002 Proceedings in Computational Statistics, pages 575 580. Physica Verlag, Heidelberg, 2002. URL http://www.stat.uni-muenchen.de/~leisch/sweave. ISBN 3-7908-1517-9. Mario J. Miranda and Paul L. Fackler. Applied Computational Economics and Finance. MIT Press, Cambridge, MA, USA, 2002. ISBN 0262134209. 7