mag_ctrl: After removing control variables, magnitude of effect of x on y, and of y on x.
Description
Uses Vinod (2015) and runs kernel regressions: x~ y + ctrl
and x~ ctrl to evaluate the `incremental change' in R-squares.
Let (rxy;ctrl) denote the square root of that `incremental change' after its sign is made the
same as that of the Pearson correlation coefficient from
cor(x,y)). One can interpret (rxy;ctrl) as
a generalized partial correlation coefficient when x is regressed on y after removing
the effect of control variable(s) in ctrl. It is more general than the usual partial
correlation coefficient, since this one
allows for nonlinear relations among variables.
Next, the function computes `dxdy' obtained by multiplying (rxy;ctrl) by the ratio of
standard deviations, sd(x)/sd(y). Now our `dxdy' approximates the magnitude of the
partial derivative (dx/dy) in a causal model where y is the cause and x is the effect.
The function also reports entirely analogous `dydx' obtained by interchanging x and y.
Usage
mag_ctrl(x, y, ctrl)
Arguments
x
Vector of data on the dependent variable.
y
Vector of data on the regressor.
ctrl
data matrix for designated control variable(s) outside causal paths.
A constant vector is not allowed as a control variable.
Value
vector of two magnitudes `dxdy' (effect when x is regressed on y) and
`dydx' for reverse regression. Both regressions remove the effect of control variable(s).
References
Vinod, H. D. `Generalized Correlation and Kernel Causality with
Applications in Development Economics' in Communications in
Statistics -Simulation and Computation, 2015,
gffn86
Vinod, H. D. 'Matrix Algebra Topics in Statistics and Economics
Using R', Chapter 4 in Handbook of Statistics: Computational Statistics
with R, Vol.32, co-editors: M. B. Rao and C. R. Rao. New York:
North Holland, Elsevier Science Publishers, 2014, pp. 143-176.
# NOT RUN {set.seed(123);x=sample(1:10); z=runif(10); y=1+2*x+3*z+rnorm(10)
options(np.messages=FALSE)
mag_ctrl(x,y,z)#dx/dy=0.47 is approximately 0.5, but dy/dx=1.41 is not approx=2,# }