The module makes each output cell value a function of the values assigned to the corresponding cells in the input raster map series.
Y = b1 * X1 + b2 * X2 + ... + bn * Xn
The list of inputs for each cell (including NULLs) is passed to the regression function. The function computes the parameters over the non-NULL values, producing a NULL result only if there aren't enough non-NULL values for computing.
For example the csv file for regression between NDVI and (elevation, precipitation)
NDVI = b1*Elevation + b2*Precipitation
y,elevation,precipipation ndvi_1,elev_1,precip_1 ndvi_2,elev_2,precip_2 ... ndvi_n,elev_n,precip_n
The second paramether is result_prefix. It is used for construction of the coefficient names. For example if result_prefix="coef.", the names of the regression coefficients will be "coef.elevation" and "coef.precipitation".
r.mregression.series samples=settings result_prefix="coef."
If the regression model includes the intercept
NDVI = b0 + b1*Elevation + b2*Precipitation
r.mapcalc "ones = 1.0"
y,offset,elevation,precipipation ndvi_1,ones,elev_1,precip_1 ndvi_2,ones,elev_2,precip_2 ... ndvi_n,ones,elev_n,precip_n
r.mregression.series samples=settings result_prefix="coef."
Create X variables (random numbers):
r.mapcalc -s "x11 = rand(0, 20)" r.mapcalc -s "x21 = rand(0, 20)" r.mapcalc -s "x31 = rand(0, 20)" r.mapcalc -s "x41 = rand(0, 20)" r.mapcalc -s "x51 = rand(0, 20)"
r.mapcalc -s "x12 = rand(0, 20)" r.mapcalc -s "x22 = rand(0, 20)" r.mapcalc -s "x32 = rand(0, 20)" r.mapcalc -s "x42 = rand(0, 20)" r.mapcalc -s "x52 = rand(0, 20)"
Create constant raster for the intercept:
r.mapcalc "ones = 1.0"
Suppose Y is a linear function of x1 and x2 variables plus a random error. (For testing purposes we assume that Y = 12 + 5*x1 + 3*x2). Create 5 Y rasters:
r.mapcalc -s "y1 = 12 + 5* x11 + 3*x12 + rand(0, 4)" r.mapcalc -s "y2 = 12 + 5* x21 + 3*x22 + rand(0, 4)" r.mapcalc -s "y3 = 12 + 5* x31 + 3*x32 + rand(0, 4)" r.mapcalc -s "y4 = 12 + 5* x41 + 3*x42 + rand(0, 4)" r.mapcalc -s "y5 = 12 + 5* x51 + 3*x52 + rand(0, 4)"
So we have five test rasters Y and X. Forget for a moment that we know the function and try to find the coeffitients.
Create samples csv file:
echo "y,bias,x1,x2 y1,ones,x11,x12 y2,ones,x21,x22 y3,ones,x31,x32 y4,ones,x41,x42 y5,ones,x51,x52" > settings.csv
Run the command
r.mregression.series samples=settings.csv result_prefix="coef."
Three raster maps will be created: "coef.bias", "coef.x1", "coef.x2". This rasters contains the fitted coefitients.
Last changed: $Date: 2016-06-14 21:12:29 +0200 (Tue, 14 Jun 2016) $
Available at: r.mregression.series source code (history)
Main index | Raster index | Topics index | Keywords index | Graphical index | Full index
© 2003-2018 GRASS Development Team, GRASS GIS 7.4.1svn Reference Manual