DoubleMLPLIV: Double machine learning for partially linear IV regression...

Description Format Details Super class Active bindings Methods See Also Examples

Description

Double machine learning for partially linear IV regression models.

Format

R6::R6Class object inheriting from DoubleML.

Details

Partially linear IV regression (PLIV) models take the form

Y - Dθ_0 = g_0(X) + ζ,

Z = m_0(X) + V,

with E[ζ|Z,X]=0 and E[V|X] = 0. Y is the outcome variable variable, D is the policy variable of interest and Z denotes one or multiple instrumental variables. The high-dimensional vector X = (X_1, …, X_p) consists of other confounding covariates, and ζ and V are stochastic errors.

Super class

DoubleML::DoubleML -> DoubleMLPLIV

Active bindings

partialX

(logical(1))
Indicates whether covariates X should be partialled out.

partialZ

(logical(1))
Indicates whether instruments Z should be partialled out.

Methods

Public methods

Inherited methods

Method new()

Creates a new instance of this R6 class.

Usage
DoubleMLPLIV$new(
  data,
  ml_g,
  ml_m,
  ml_r,
  partialX = TRUE,
  partialZ = FALSE,
  n_folds = 5,
  n_rep = 1,
  score = "partialling out",
  dml_procedure = "dml2",
  draw_sample_splitting = TRUE,
  apply_cross_fitting = TRUE
)
Arguments
data

(DoubleMLData)
The DoubleMLData object providing the data and specifying the variables of the causal model.

ml_g

(LearnerRegr, character(1))
An object of the class mlr3 regression learner to pass a learner, possibly with specified parameters, for example lrn("regr.cv_glmnet", s = "lambda.min"). Alternatively, a character(1) specifying the name of a mlr3 regression learner that is available in mlr3 or its extension packages mlr3learners or mlr3extralearners, for example "regr.cv_glmnet".
ml_g refers to the nuisance function g_0(X) = E[Y|X].

ml_m

(LearnerRegr, character(1))
An object of the class mlr3 regression learner to pass a learner, possibly with specified parameters, for example lrn("regr.cv_glmnet", s = "lambda.min"). Alternatively, a character(1) specifying the name of a mlr3 regression learner that is available in mlr3 or its extension packages mlr3learners or mlr3extralearners, for example "regr.cv_glmnet".
ml_m refers to the nuisance function m_0(X) = E[Z|X].

ml_r

(LearnerRegr, character(1))
An object of the class mlr3 regression learner to pass a learner, possibly with specified parameters, for example lrn("regr.cv_glmnet", s = "lambda.min"). Alternatively, a character(1) specifying the name of a mlr3 regression learner that is available in mlr3 or its extension packages mlr3learners or mlr3extralearners, for example "regr.cv_glmnet".
ml_r refers to the nuisance function r_0(X) = E[D|X].

partialX

(logical(1))
Indicates whether covariates X should be partialled out. Default is TRUE.

partialZ

(logical(1))
Indicates whether instruments Z should be partialled out. Default is FALSE.

n_folds

(integer(1))
Number of folds. Default is 5.

n_rep

(integer(1))
Number of repetitions for the sample splitting. Default is 1.

score

(character(1), function())
A character(1) ("partialling out" is the only choice) or a function() specifying the score function. If a function() is provided, it must be of the form function(y, z, d, g_hat, m_hat, r_hat, smpls) and the returned output must be a named list() with elements psi_a and psi_b. Default is "partialling out".

dml_procedure

(character(1))
A character(1) ("dml1" or "dml2") specifying the double machine learning algorithm. Default is "dml2".

draw_sample_splitting

(logical(1))
Indicates whether the sample splitting should be drawn during initialization of the object. Default is TRUE.

apply_cross_fitting

(logical(1))
Indicates whether cross-fitting should be applied. Default is TRUE.


Method clone()

The objects of this class are cloneable with this method.

Usage
DoubleMLPLIV$clone(deep = FALSE)
Arguments
deep

Whether to make a deep clone.

See Also

Other DoubleML: DoubleMLIIVM, DoubleMLIRM, DoubleMLPLR, DoubleML

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
library(DoubleML)
library(mlr3)
library(mlr3learners)
library(data.table)
set.seed(2)
ml_g = lrn("regr.ranger", num.trees = 100, mtry = 20, min.node.size = 2, max.depth = 5)
ml_m = ml_g$clone()
ml_r = ml_g$clone()
obj_dml_data = make_pliv_CHS2015(alpha = 1, n_obs = 500, dim_x = 20, dim_z = 1)
dml_pliv_obj = DoubleMLPLIV$new(obj_dml_data, ml_g, ml_m, ml_r)
dml_pliv_obj$fit()
dml_pliv_obj$summary()


## Not run: 
library(DoubleML)
library(mlr3)
library(mlr3learners)
library(mlr3tuning)
library(data.table)
set.seed(2)
ml_g = lrn("regr.rpart")
ml_m = ml_g$clone()
ml_r = ml_g$clone()
obj_dml_data = make_pliv_CHS2015(
  alpha = 1, n_obs = 500, dim_x = 20,
  dim_z = 1)
dml_pliv_obj = DoubleMLPLIV$new(obj_dml_data, ml_g, ml_m, ml_r)
param_grid = list(
  "ml_g" = paradox::ParamSet$new(list(
    paradox::ParamDbl$new("cp", lower = 0.01, upper = 0.02),
    paradox::ParamInt$new("minsplit", lower = 1, upper = 2))),
  "ml_m" = paradox::ParamSet$new(list(
    paradox::ParamDbl$new("cp", lower = 0.01, upper = 0.02),
    paradox::ParamInt$new("minsplit", lower = 1, upper = 2))),
  "ml_r" = paradox::ParamSet$new(list(
    paradox::ParamDbl$new("cp", lower = 0.01, upper = 0.02),
    paradox::ParamInt$new("minsplit", lower = 1, upper = 2))))

# minimum requirements for tune_settings
tune_settings = list(
  terminator = mlr3tuning::trm("evals", n_evals = 5),
  algorithm = mlr3tuning::tnr("grid_search", resolution = 5))
dml_pliv_obj$tune(param_set = param_grid, tune_settings = tune_settings)
dml_pliv_obj$fit()
dml_pliv_obj$summary()

## End(Not run)

DoubleML documentation built on Oct. 26, 2021, 5:06 p.m.