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