Risk regression with binary exposure and nuisance model for the odds-product.

Let $$A$$ be the binary exposure, $$V$$ the set of covariates, and $$Y$$ the binary response variable, and define $$p_a(v) = P(Y=1 \mid A=a, V=v), a\in\{0,1\}$$.

The target parameter is either the relative risk $$\mathrm{RR}(v) = \frac{p_1(v)}{p_0(v)}$$ or the risk difference $$\mathrm{RD}(v) = p_1(v)-p_0(v)$$

We assume a target parameter model given by either $$\log\{RR(v)\} = \alpha^t v$$ or $$\mathrm{arctanh}\{RD(v)\} = \alpha^t v$$ and similarly a working linear nuisance model for the odds-product $$\phi(v) = \log\left(\frac{p_{0}(v)p_{1}(v)}{(1-p_{0}(v))(1-p_{1}(v))}\right) = \beta^t v$$.

A propensity model for $$E(A=1|V)$$ is also fitted using a logistic regression working model $$\mathrm{logit}\{E(A=1\mid V=v)\} = \gamma^t v.$$

If both the odds-product model and the propensity model are correct the estimator is efficient. Further, the estimator is consistent in the union model, i.e., the estimator is double-robust in the sense that only one of the two models needs to be correctly specified to get a consistent estimate.

riskreg(
formula,
target = NULL,
nuisance = NULL,
propensity = nuisance,
data,
weights,
type = "rr",
optimal = TRUE,
std.err = TRUE,
start = NULL,
semi = TRUE,
...
)

## Arguments

formula formula (see details below) (optional) target model (formula) nuisance model (formula) propensity model (formula) data.frame optional weights type of association measure (rd og rr) If TRUE optimal weights are calculated If TRUE standard errors are calculated optional starting values Semi-parametric (double-robust) estimate (FALSE gives MLE) additional arguments to unconstrained optimization routine (nlminb)

## Value

An object of class 'riskreg.targeted' is returned. See targeted-class for more details about this class and its generic functions.

## Details

The 'formula' argument should be given as response ~ exposure | target-formula | nuisance-formula or response ~ exposure | target | nuisance | propensity

E.g., riskreg(y ~ a | 1 | x+z | x+z, data=...)

Alternatively, the model can specifed using the target, nuisance and propensity arguments: riskreg(y ~ a, target=~1, nuisance=~x+z, ...)

The riskreg_fit function can be used with matrix inputs rather than formulas.

## References

Richardson, T. S., Robins, J. M., & Wang, L. (2017). On modeling and estimation for the relative risk and risk difference. Journal of the American Statistical Association, 112(519), 1121–1130. http://dx.doi.org/10.1080/01621459.2016.1192546

Klaus K. Holst

## Examples

m <- lvm(a[-2] ~ x,
lp.target[1] ~ 1,
lp.nuisance[-1] ~ 2*x)
distribution(m,~a) <- binomial.lvm("logit")
m <- binomial.rr(m, "y","a","lp.target","lp.nuisance")
d <- sim(m,5e2,seed=1)

I <- model.matrix(~1, d)
X <- model.matrix(~1+x, d)
with(d, riskreg_mle(y, a, I, X, type="rr"))
#>    Estimate Std.Err    2.5%   97.5%   P-value
#> p1   0.9510  0.1176  0.7205  1.1815 6.196e-16
#> p2  -0.8606  0.2973 -1.4433 -0.2779 3.795e-03
#> p3   2.2874  0.3844  1.5339  3.0409 2.679e-09
with(d, riskreg_fit(y, a, nuisance=X, propensity=I, type="rr"))
#>    Estimate Std.Err   2.5% 97.5%   P-value
#> p1   0.9528  0.1165 0.7246 1.181 2.791e-16riskreg(y ~ a | 1 | x ,  data=d, type="rr")
#>             Estimate Std.Err   2.5% 97.5%  P-value
#> (Intercept)   0.9397  0.1193 0.7058 1.174 3.38e-15
## Model with same design matrix for nuisance and propensity model:
with(d, riskreg_fit(y, a, nuisance=X, type="rr"))
#>    Estimate Std.Err   2.5% 97.5%  P-value
#> p1   0.9397  0.1193 0.7058 1.174 3.38e-15
a <- riskreg(y ~ a, nuisance=~x,  data=d, type="rr")
a
#>             Estimate Std.Err   2.5% 97.5%  P-value
#> (Intercept)   0.9397  0.1193 0.7058 1.174 3.38e-15