[Thread Prev][Thread Next][Index]

[ferret_users] 2D Spatial Correlations



Hello all,

I have found a few threads on 2D correlations using regressxy.jnl provided. I also found replies that suggests the "x" and "y" averaging should be done simultaneously to the correct answer. Both are listed below. I tried both of these scripts on two 2D sea level maps I have created (same dimensions, though are curvilinear) . The correlation values I receive are <0.05  ... seemingly incorrect because the maps look similar to my eye. Has there been any progress with 2D spatial correlations since these threads were written (~2006).
Thanks in advance! - Paul

regressxy.jnl :

\CANCEL MODE VERIFY
! Description: define FERRET variables for regression along the X and Y axis

say ... Linear Regression In the XY Plane
say ... Instructions:
say Use the LET command to define new variables
say Define the variable P as your independent (X) variable
say Define the variable Q as your dependent (Y) variable
say Results will be variables "SLOPE", "INTERCEP" and "RSQUARE"
say QHAT will be the regression estimate
say Note: If "Y" is your independent variable then
say ... "SET GRID Q" after defining Q.
say ...

let pq = p*q
let pqmask = pq-pq ! 0 or "missing" so all variables share the same missing
let pmasked = p + pqmask
let qmasked = q + pqmask
let pp = pmasked*pmasked
let qq = qmasked*qmasked

let pxave = pmasked[x=@ave]
let qxave = qmasked[x=@ave]
let pave = pxave[y=@ave]
let qave = qxave[y=@ave]
let pqxave = pq[x=@ave]
let ppxave = pp[x=@ave]
let qqxave = qq[x=@ave]
let pqave = pqxave[y=@ave]
let ppave = ppxave[y=@ave]
let qqave = qqxave[y=@ave]
let pvar = ppave - pave*pave
let qvar = qqave - qave*qave
let pqvar = pqave - pave*qave

let slope = pqvar / pvar
let intercep = qave - slope*pave
let qhat = slope*p + intercep
let rsquare = (pqvar*pqvar) / (pvar*qvar)
let corr = pqvar/(pvar*qvar)^0.5

SET MODE/LAST VERIFY




regressxy_new.jnl :

\CANCEL MODE VERIFY
! Description: define FERRET variables for regression along the X and Y axis

say ... Linear Regression In the XY Plane
say ... Instructions:
say Use the LET command to define new variables
say Define the variable P as your independent (X) variable
say Define the variable Q as your dependent (Y) variable
say Results will be variables "SLOPE", "INTERCEP" and "RSQUARE"
say QHAT will be the regression estimate
say Note: If "Y" is your independent variable then
say ... "SET GRID Q" after defining Q.
say ...

let pq = p*q
let pqmask = pq-pq ! 0 or "missing" so all variables share the same missing
let pmasked = p + pqmask
let qmasked = q + pqmask
let pp = pmasked*pmasked
let qq = qmasked*qmasked

let pave = pmasked[x=@ave,y=@ave]
let qave = qmasked[x=@ave,y=@ave]
let pqave = pq[x=@ave,y=@ave]
let ppave = pp[x=@ave,y=@ave]
let qqave = qq[x=@ave,y=@ave]
let pvar = ppave - pave*pave
let qvar = qqave - qave*qave
let pqvar = pqave - pave*qave

let slope = pqvar / pvar
let intercep = qave - slope*pave
let qhat = slope*p + intercep
let rsquare = (pqvar*pqvar) / (pvar*qvar)
let corr = pqvar/(pvar*qvar)^0.5

SET MODE/LAST VERIFY


[Thread Prev][Thread Next][Index]
Contact Us
Dept of Commerce / NOAA / OAR / PMEL / Ferret

Privacy Policy | Disclaimer | Accessibility Statement