# 6.4.3. Product-Moment Correlation (Pearson)¶

## 6.4.3.1. Operation¶

Operation name

Product-Moment Correlation (Pearson)

Algorithm reference

Wikipedia entry on Pearson product-moment correlation coefficient

Description

This Operation performs a correlation analysis for metrically scaled data (assumption: normal distribution).

Utilised in

Use Case #9 Workflow

## 6.4.3.2. Options¶

name

temporal correlation

description

performs a correlation analysis regarding temporally variable values

items

one grid cell, cell-by-cell, spatial mean

name

spatial correlation

description

performs a correlation analysis regarding spatially variable values

items

one point in time, time-by-time, temporal mean

name

scatter-plot

description

displays a scatter-plot showing corresponding variable values (not for time-by-time and pixel-by-pixel analysis)

name

time series plot

description

plots results for spatial time-by-time correlation

name

map

description

produces and displays a map showing cell-by-cell correlations

name

table

description

produces a table listing pixel-by-pixel respectively time-by-time correlation coefficients

name

t test

description

performs a t test to assess the significance level of the results

## 6.4.3.3. Input data¶

name

longitude (lon, x)

type

floating point number

range

[-180.; +180.] respectively [0.; 360.]

dimensionality

vector

description

grid information on longitudes

name

latitude (lat, y)

type

floating point number

range

[-90.; +90.]

dimensionality

vector

description

grid information on latitudes

name

height (z)

type

floating point number

range

[-infinity; +infinity]

dimensionality

vector

description

grid information on height/depth

name

variable1

type

floating point number

range

[-infinity; +infinity]

dimensionality

cube or 4D

description

values of a certain geophysical quantity

name

variable2

type

floating point number

range

[-infinity; +infinity]

dimensionality

cube or 4D

description

values of a certain geophysical quantity

name

time (time, t)

type

integer or double

range

[0; +infinity]

dimensionality

vector

description

days/months since …

## 6.4.3.4. Output data¶

name

product-moment correlation coefficient (Pearson)

type

floating point number

range

[-1.; +1.]

dimensionality

scalar

description

for correlation analysis for metrically scaled data

name

signficance

type

boolean

range

{0,1}

dimensionality

scalar

description

significant or non-significant

alternatively

name

level of signficance

type

floating point number

range

[0; +infinity]

dimensionality

scalar

description

significance level of correlation

name

scatter plot

description

displays a plot (see Options)

name

time series plot

description

displays a time series plot (see Options)

name

map

description

displays a map (see Options)

name

table

description

displays a table (see Options)

## 6.4.3.5. Parameters¶

name

level of significance

type

floating point number

valid values

[0; 1]

default value

0.95

description

level of significance for t test, determines t value to be compared with test value

for plot settings, the procedure is forwarded to the Visualisation Operation

## 6.4.3.6. Example¶

```# Fortran subroutine for product moment correlation analysis (includes mean value function)

c-----subroutine "correlation"
c.....calculation of
c.....a) product-moment corellation coefficient "cc" between x(t) and y(t), t=[1,nt]
c.....b) test-value "test" for t-test
subroutine s_correlation(nt,x,y,cc,test) !Zeit
implicit none
integer nt,t
real x(nt),dummy,dummy2,dummy3,y(nt),cc,test,f_mw

dummy=0.
dummy2=0.
dummy3=0.
do t=1,nt
dummy=dummy+((x(t)-f_mw(n,x))*(y(t)-f_mw(n,y)))
dummy2=dummy2+((x(t)-f_mw(n,x))**2)
dummy3=dummy3+((y(t)-f_mw(n,y))**2)
enddo !ja
cc=(dummy)/sqrt(dummy2*dummy3)
test=cc*sqrt((n-2)/(1-(cc**2)))

return
end

c-----function "mean value"
c.....calculation of mean value f_mw(nt,x) of vairable x with a sample size nt
real function f_mw(nt,x)
implicit none
integer nt,t
real x(nt)

f_mw=0.
do t=1,nt
f_mw=f_mw+x(t)
enddo
f_mw=f_mw/float(nt)

return
end
```