Skip to content

name: r.regression.line description: Calculates linear regression from two raster maps: y = a + b*x. keywords: [ raster, statistics, regression ]


r.regression.line

Calculates linear regression from two raster maps: y = a + b*x.

r.regression.line [-g] mapx=name mapy=name [output=name] format=name [--overwrite] [--verbose] [--quiet] [--qq] [--ui]

Example:

r.regression.line mapx=name mapy=name format=plain

grass.script.parse_command("r.regression.line", mapx, mapy, output=None, format="plain", flags=None, overwrite=False, verbose=False, quiet=False, superquiet=False)

Example:

gs.parse_command("r.regression.line", mapx="name", mapy="name", format="json")

Parameters

mapx=name [required]
    Map for x coefficient
mapy=name [required]
    Map for y coefficient
output=name
    ASCII file for storing regression coefficients (output to screen if file not specified).
format=name [required]
    Output format
    Allowed values: plain, shell, json
    Default: plain
    plain: Human readable text output
    shell: shell script style text output
    json: JSON (JavaScript Object Notation)
-g
    Print in shell script style [deprecated]
    This flag is deprecated and will be removed in a future release. Use format=shell instead.
--overwrite
    Allow output files to overwrite existing files
--help
    Print usage summary
--verbose
    Verbose module output
--quiet
    Quiet module output
--qq
    Very quiet module output
--ui
    Force launching GUI dialog

mapx : str, required
    Map for x coefficient
    Used as: input, raster, name
mapy : str, required
    Map for y coefficient
    Used as: input, raster, name
output : str, optional
    ASCII file for storing regression coefficients (output to screen if file not specified).
    Used as: output, file, name
format : str, required
    Output format
    Used as: name
    Allowed values: plain, shell, json
    plain: Human readable text output
    shell: shell script style text output
    json: JSON (JavaScript Object Notation)
    Default: plain
flags : str, optional
    Allowed values: g
    g
        Print in shell script style [deprecated]
        This flag is deprecated and will be removed in a future release. Use format=shell instead.
overwrite: bool, optional
    Allow output files to overwrite existing files
    Default: False
verbose: bool, optional
    Verbose module output
    Default: False
quiet: bool, optional
    Quiet module output
    Default: False
superquiet: bool, optional
    Very quiet module output
    Default: False

DESCRIPTION

r.regression.line calculates a linear regression from two raster maps, according to the formula

y = a + b*x

where

x
y

represent the input raster maps.

Optionally, it saves regression coefficients as a ASCII file. The result includes the following coefficients: offset/intercept (a) and gain/slope (b), correlation coefficient (R), number of elements (N), means (medX, medY), standard deviations (sdX, sdY), and the F test for testing the significance of the regression model as a whole (F).

NOTES

The results for offset/intercept (a) and gain/slope (b) are identical to that obtained from R-stats's lm() function.

EXAMPLE

Comparison of two DEMs (SRTM and NED, both at 30m resolution), provided in the North Carolina sample dataset:

g.region raster=elev_srtm_30m -p
r.regression.line mapx=elev_ned_30m mapy=elev_srtm_30m
 y = a + b*x
   a (Offset): -1.659279
   b (Gain): 1.043968
   R (sumXY - sumX*sumY/N): 0.894038
   N (Number of elements): 225000
   F (F-test significance): 896093.366283
   meanX (Mean of map1): 110.307571
   sdX (Standard deviation of map1): 20.311998
   meanY (Mean of map2): 113.498292
   sdY (Standard deviation of map2): 23.718307

Using the shell format option AND eval to make results available in the shell:

g.region raster=elev_srtm_30m -p
eval `r.regression.line mapx=elev_ned_30m mapy=elev_srtm_30m format=shell`

# print result stored in respective variables
echo $a
-1.659279

echo $b
1.043968

echo $R
0.894038

Using the JSON format option and Python to parse the output:

import grass.script as gs

data = gs.parse_command(
    "r.regression.line", mapx="elev_ned_30m", mapy="elev_srtm_30m", format="json"
)
print(data)

Possible JSON Output:

{
 "a": -1.6592786233805945,
 "b": 1.0439679629649166,
 "R": 0.8940383063008781,
 "N": 225000,
 "F": 896093.366283,
 "x_mean": 110.30757108713786,
 "x_stddev": 20.311997672696272,
 "y_mean": 113.49829166406644,
 "y_stddev": 23.718306793642626
}

SEE ALSO

d.correlate, r.regression.multi, r.stats

AUTHORS

Dr. Agustin Lobo - alobo at ija.csic.es
Updated to GRASS 5.7 Michael Barton, Arizona State University
Script style output Markus Neteler
Conversion to C module Markus Metz

SOURCE CODE

Available at: r.regression.line source code (history)
Latest change: Tuesday Jul 01 19:42:35 2025 in commit 4ae5cc2