# Expand the dataset and calculate ratio-of-mediator probability weights

### Description

This function both expands the data along hypothetical exposure values and calculates ratio-of-mediator probability weights.

### Usage

1 2 3 |

### Arguments

`object` |
fitted model object representing the mediator model. |

`formula` |
a |

`data` |
data, as matrix or data frame, containing the exposure (and other relevant) variables. Redundant if already specified in call for fitted model specified in |

`nRep` |
number of replications or hypothetical values of the exposure to sample for each observation unit. |

`xSampling` |
character string indicating how to sample from the conditional exposure distribution.
Possible values are |

`xFit` |
an optional fitted object (preferably |

`percLim` |
a numerical vector of the form |

`...` |
additional arguments. |

### Details

The calculated weights are ratios of fitted probabilities or probability densities from the distribution of the mediator model.
This model needs to be specified as a fitted object in the `object`

argument.

If the model-fitting function used to fit the mediator model does not require specification of a `formula`

or `data`

argument,
these need to be specified explicitly in order to enable `neWeight.default`

to extract pointers to variable types relevant for mediation analysis.

Whether a `formula`

is specified externally (in the call for the fitted mediator model object which is specified in `object`

) or internally (via the `formula`

argument),
it always needs to be of the form `M ~ X + C1 + C2`

, with predictor variables entered in the following prespecified order:

exposure

`X`

: The first predictor is coded as exposure or treatment.baseline covariates

`C`

: All remaining predictor variables are automatically coded as baseline covariates.

It is important to adhere to this prespecified order to enable `neWeight`

to create valid pointers to these different types of predictor variables.
This requirement extends to the use of operators different than the `+`

operator, such as the `:`

and `*`

operators (when e.g. adding interaction terms).
For instance, the formula specifications `M ~ X * C1 + C2`

, `M ~ X + C1 + X:C1 + C2`

and `Y ~ X + X:C1 + C1 + C2`

will create identical pointers to the different types of variables,
as the order of the unique predictor variables is identical in all three specifications.

Furthermore, categorical exposures that are not coded as factors in the original dataset, should be specified as factors in the formula,
using the `factor`

function, e.g. `M ~ factor(X) + C1 + C2`

.
Quadratic or higher-order polynomial terms can be included as well, by making use of the `I`

function or by using the `poly`

function.
For instance, `M ~ X + I(X^2) + C1 + C2`

and `M ~ poly(X, 2, raw = TRUE) + C1 + C2`

are equivalent and result in identical pointers to the different types of variables.

The command `terms(object, "vartype")`

(with `object`

replaced by the name of the resulting expanded dataset) can be used to check whether valid pointers have been created.

In contrast to imputation models with categorical exposures, additional arguments need to be specified if the exposure is continuous. All of these additional arguments are related to the sampling procedure for the exposure.

Whereas the number of replications `nRep`

for categorical variables equals the number of levels for the exposure coded as a factor (i.e. the number of hypothetical exposure values), the number of desired replications needs to be specified explicitly for continuous exposures.
Its default is 5.

If `xFit`

is left unspecified, the hypothetical exposure levels are automatically sampled from a linear model for the exposure, conditional on a linear combination of all covariates.
If one wishes to use another model for the exposure, this default model specification can be overruled by referring to a fitted model object in the `xFit`

argument.
Misspecification of this sampling model does not induce bias in the estimated coefficients and standard errors of the natural effect model.

The `xSampling`

argument allows to specify how the hypothetical exposure levels should be sampled from the conditional exposure distribution (which is either entered explicitly using the `xFit`

argument or fitted automatically as described in the previous paragraph).
The `"random"`

option randomly samples `nRep`

draws from the exposure distribution, whereas the `"quantiles"`

option (default) samples `nRep`

quantiles at equal-sized probability intervals. Only the latter hence yields fixed exposure levels given `nRep`

and `xFit`

.

In order to guarantee that the entire support of the distribution is being sampled (which might be a concern if `nRep`

is chosen to be small), the default lower and upper sampled quantiles are the 5th and 95th percentiles.
The intermittent quantiles correspond to equal-sized probability intervals. So, for instance, if `nRep = 4`

, then the sampled quantiles will correspond to probabilities 0.05, 0.35, 0.65 and 0.95.
These default 'outer' quantiles can be changed by specifying the `percLim`

argument accordingly. By specifying `percLim = NULL`

, the standard quantiles will be sampled (e.g., 0.2, 0.4, 0.6 and 0.8 if `nRep = 4`

).

### Value

A data frame of class `c("data.frame", "expData", "weightData")`

. See `expData`

for its structure.

### See Also

`neWeight`

, `neWeight.formula`

, `expData`

### Examples

1 2 3 4 5 6 7 8 9 10 11 | ```
data(UPBdata)
## example using glm
fit.glm <- glm(negaff ~ att + gender + educ + age, data = UPBdata)
weightData <- neWeight(fit.glm, nRep = 2)
## example using vglm (yielding identical results as with glm)
library(VGAM)
fit.vglm <- vglm(negaff ~ att + gender + educ + age,
family = gaussianff, data = UPBdata)
weightData2 <- neWeight(fit.vglm, nRep = 2)
``` |