# [ncl-talk] partial correlation

Saji Hameed saji.nh at gmail.com
Tue Oct 21 23:17:15 MDT 2014

```Hi Erika,

Hopefully the following is helpful.  It returns both partial and part
correlations, but if you want
you can ask for only one of them to be returned using the optional argument
"opt"

e.g opt=True
opt at partialcorrelation=True

saji
--

function mreg_part_corr(x1,x2,y,opt)
local opt
begin
x1x2 = escorc(x1,x2)
tol = sqrt(1-x1x2^2)

nx1 = dimsizes(x1)
X = new( (/3,nx1/), float)
X(0,:) = 1.0
X(1,:) = x1
X(2,:) = x2

beta = reg_multlin(y, X, False)
dreg = beta(1)
nreg = beta(2)

Xstd = dim_stddev(X)
Ystd = stddev(y)
XstdYstd = Xstd/Ystd
B = beta*XstdYstd
B(0) = 0.0
part_corr_x1 = B(1)*tol
part_corr_x2 = B(2)*tol
partial_corr_x1 = part_corr_x1/sqrt((1-(escorc(y,x2))^2))
partial_corr_x2 = part_corr_x2/sqrt((1-(escorc(y,x1))^2))
if opt .and. isatt(opt,"part_correlation")
if opt at part_correlation
return((/part_corr_x1, part_corr_x2/))
end if
end if
if opt .and. isatt(opt,"partal_correlation")
if opt at partial_correlation
return((/partial_corr_x1, partial_corr_x2/))
end if
end if
res=(/partial_corr_x1,partial_corr_x2,part_corr_x1,part_corr_x2/)
return(res)
end

On Tue, Oct 21, 2014 at 3:13 AM, Erika Folova <e.folova at gmail.com> wrote:

> Hallo NCL users,
>
> Anyone try to compute the partial correlation, e.g.,  between a and b
> excluding the effect of c ?
> Thank you
>
> Erika,
>
> _______________________________________________
> ncl-talk mailing list
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20141022/c290f893/attachment.html
```