Nick Cox:
Using corrcii (or corrci) (from SSC) for correlation coefficients with abs(r) = 1 yields the error message "invalid correlation". This is slightly unfortunate if corrcii (or corrci) is applied to a list of correlation coefficients from any correlation matrix.
Wouldn't it be more convenient to modify the argument to atanh()in corrcii.ado (or corrci.ado) such as to subtract a tiny number from r if r = 1 (or to add if r = -1)? For example
Using corrcii (or corrci) (from SSC) for correlation coefficients with abs(r) = 1 yields the error message "invalid correlation". This is slightly unfortunate if corrcii (or corrci) is applied to a list of correlation coefficients from any correlation matrix.
Wouldn't it be more convenient to modify the argument to atanh()in corrcii.ado (or corrci.ado) such as to subtract a tiny number from r if r = 1 (or to add if r = -1)? For example
Code:
. scalar r = 1
. corrcii 100 `=sign(r)*min(abs(r),`=1-5e-12')'
n r 95% confidence limits
100 1.000 1.000 1.000
. scalar r = -1
. corrcii 100 `=sign(r)*min(abs(r),`=1-5e-12')'
n r 95% confidence limits
100 -1.000 -1.000 -1.000
. // see:
.
. scalar r = -.9992
. assert r == sign(r)*min(abs(r),`=1-5e-12')
. scalar r = -1
. assert r == sign(r)*min(abs(r),`=1-5e-12')
assertion is false
r(9);

Comment